Introduction
In the digital age, how can we leverage AI for product innovation? This article explores the application of AI in product design, analyzing key technologies and strategies to help product managers find the best balance between innovation and practicality.
As the title suggests, I crafted an iOS app using AI coding tools and launched it on the App Store, named “SafeMark.”
The initial motivation for this app came from my experience during the New Year when I was asked to send a photo of my ID to a local Xiaomi store to purchase a range hood. I realized that I should have added a watermark to my ID photo to prevent it from being misused.
Thus, the app’s concept was noted down in my flomo. Recently, I utilized AI coding tools Cursor and Trae to develop it and submitted it to the App Store (still under review at the time of writing). Although the process was challenging, I am glad to have completed it.
Here is the promotional image I used for the App Store, showcasing the first version of the app, with plans for future iterations.
This is my second product; the first was a Chrome extension called flomo Quick Capture, which is available in the Chrome Web Store:
In another article, I elaborated on the rationale behind developing this product, primarily aimed at enhancing my personal workflow.
Why Start with a Chrome Extension?
- Low development cost, allowing for quick familiarization with Cursor.
- No compliance registration process in China, enabling faster launch and immediate feedback.
Why Develop an App?
This app is one of my short-term goals, and I also plan to create a WeChat mini-program. This article marks not the end but the beginning of my journey.
AI Coding Tools
AI coding tools can be broadly categorized into AI IDE tools and code generation/assistance tools:
- AI IDE tools include Cursor, Windsurf, Trae, and Trae CN.
- Code assistance tools include GitHub Copilot and MarsCode.
There are many resources online listing related products and tutorials, so choose the tools that suit you best. I used a combination of Cursor and Trae, taking advantage of Trae’s early-stage free access to Claude 3.7 Sonnet and Gemini 2.5 Pro, both of which are well-regarded models.
It’s important to note that in the AI era, while model capabilities are crucial, engineering optimization and tool adaptation are equally significant. These three aspects evolve together, especially engineering optimization.
The same model may yield different results due to the engineering team’s capabilities. For instance, Cursor can help generate complex logic code, while Trae is more suited for basic modifications like changing colors or adjusting component positions.
Recently, when the Cursor server crashed, I attempted to use Trae for some tasks but faced multiple failures, leading to the creation of several new projects due to incomplete git recovery.
I consulted ChatGPT, which suggested possible reasons:
- Git operation granularity may be limited: Trae might simplify commands like reset, checkout, and revert, not restoring the workspace and cache as CLI does.
- File synchronization issues: Some files (like auto-generated cache files) may not be under git control, leading to incomplete recovery.
- Recovery operations may not trigger UI/memory synchronization: You might restore a version, but the IDE’s running state may not refresh, showing previous content.
- Only restoring the code area without restoring runtime context: Trae might only restore code without addressing dependencies (like environment variables).
To this day, I’m unsure of the exact reasons, but I did find my project incomplete after recovery, prompting me to create several new projects. I hope to pinpoint and address these issues in the future.
Thus, the correct understanding is that a good model is a bonus, not a necessity.
App Development and Promotion Process
Before initiating this project, I did not conduct a needs analysis or market research. I simply outlined the app’s basic architecture and functionality, trimming features down to the MVP level, and then began development with AI tools.
As mentioned earlier, I assigned complex tasks to Cursor and simpler ones to Trae or Trae CN.
My previous habit was to create an idea.md file (not a notepad) for easy reading by Ask, Agent, and MarsCode. I would refine and confirm requirements through Ask, then break down tasks into executable plans for Agent to write. At this stage, when AI was not as powerful, I acted as a planner to help refine processes and steps.
Using Cursor’s Claude 3.7 Sonnet, I generated HTML, but the result was unsatisfactory. Given the limited number of pages, I decided to sketch a design.
With the design draft, the page was quickly built by Cursor.
Coincidentally, my Cursor subscription expired, so I thought, why not use Trae for development? I could take advantage of Claude 3.7 Sonnet for free. This led to several days of AI coding, bug fixing, and more coding.
Eventually, I renewed my Cursor subscription and found that several bugs Trae had worked on for days were resolved by Cursor in a few attempts.
Since I initially used a non-developer account, I spent another day registering, updating account information, and waiting for approval. During this time, I prepared the necessary information for the App Store submission until my account was approved on Friday night. I then filled out the App Store submission details, rebuilt the project, uploaded it, and submitted it for review.
For the first time, I managed the entire app development process alone, which felt incredibly rewarding. I look forward to seeing it downloaded and used to solve problems.
Final Thoughts
I once asked myself a question: If I extend the time frame to think about what I am doing now, what will the results be if I persist for 2, 5, or 10 years? Is it what I desire?
Consider this: if employees in a company are unhappy, what kind of fun products can they create? If one cannot find meaning in their job, perhaps they should pursue a side business to provide for those in need, thus enhancing their happiness.
About three years ago (early 2022), I envisioned developing an app and launching it in an app store to generate side income. This idea has remained unchanged, only refined over time to make it more reasonable in the present context. This includes but is not limited to:
- The core strategy of the app is to focus on the front end while minimizing backend complexity.
- Not just developing one app, but multiple apps.
- Only developing an iOS version for the App Store.
- Beyond side income, this approach could be one of the levers for achieving a better life in the future.
- …
I continuously reflect on the validity of these thoughts and have shared them with friends to gather their opinions, further refining my thinking.
Inspiration from independent developers and product managers around me, such as those from Mida Technology, the flomo team, and others, has been encouraging.
The current AI era has significantly lowered the barriers for a non-programming product manager to develop an app, making the journey from “design draft – development – debug – launch” a reality.
Why did it take three years to complete my first project?
Because at that time, my capabilities made pursuing a side business a low ROI endeavor. The results obtained through my job in the early years were far more rewarding than investing time and energy in a so-called “side business.”
Three years is neither long nor short. It feels long because I only recently took action, yet it feels short because I finally began to act.
I hold the view that work is a side business, merely a part of our lives, fulfilling our basic needs, while our main pursuit should be personal growth and realizing life’s value.
At the moment of launching the app, I posted on social media: no words, just an image of the icon from the Smartisan Notes app.
The Smartisan Notes icon features a quote I love from Kahlil Gibran’s “The Prophet”: Do not forget why you started, just because you have come so far.
With that, I conclude my reflections. Wishing you a pleasant life and successful work!
Comments
Discussion is powered by Giscus (GitHub Discussions). Add
repo,repoID,category, andcategoryIDunder[params.comments.giscus]inhugo.tomlusing the values from the Giscus setup tool.