iOS

The first app successfully launched on the app store

Published Time : 2025-12-08

UnDoc Development Journey: When AI Doctors Meet Home Health Stewards

When I witnessed my family scrambling to manage complex health data and medication reminders in daily life, an idea came to me: can I create an app that acts like a caring family health manager, taking care of the health of the entire family? It not only needs to be able to record data, but also smart enough to answer health questions and proactively remind. This is XunDoc App.


1. Build a health data center for the family

At first, I turned to AI assistants for architecture guidance. My idea is very clear: a system based on families that can manage member information and record multiple health indicators (such as blood pressure, blood sugar, etc.). AI quickly provided a code framework based on SwiftUI and MVVM patterns, and suggested using UserDefaults to store data.

But for a complete application, I immediately encountered the first question: how to efficiently and accurately share data between different views? At first, I simply used @ State, but as the functionality increased, the data flow became a mess and there were often instances of view data being out of sync.

Then when Claude couldn't solve it, I went to ask Deepseek, who pointed it out bluntly: "Your data management is too scattered. You should use EnvironmentObject in conjunction with singleton mode to establish a unified data source. ”This suggestion became a turning point for the project. I have created two core managers, FamilyShareManager and HealthDataManager. When I entrusted the addition, deletion, modification, and retrieval of family members, as well as the input and reading of health data, to them for unified scheduling, the entire application's data immediately became smooth and stable as if connected to the Ren Du Er Mai.


2. Please invite an AI doctor: integrate Moonshot API

Once the basic framework is established, the next step is to implement the core "intelligent" part. I want users to be able to consult AI about health issues through text and images. I found the AI assistant again and described four consulting scenarios, including skin analysis and report interpretation. It quickly helped me write the code to call the Moonshot multimodal API.

However, everything cannot go smoothly. The text consultation went smoothly, but failed frequently when it came to uploading images. The code provided by AI crashes when processing slightly larger images, and the logs are filled with encoding errors. I once suspected it was a network issue, but after repeatedly investigating, I asked Deepseek and he told me: "The multimodal API has strict limitations on the Base64 encoding and size of images, and you need to compress and verify them in the front-end. ”

I gave Claude the advice he gave me. Claude helped me write a 'image preprocessing' function that automatically compresses images to within 4MB and ensures correct encoding format. After this' level 'was set up, the previously unruly image upload function finally became gentle and obedient. Watching a photo taken in the app and receiving professional skin analysis advice, the feeling of holding cutting-edge AI technology in one's hand, is truly exciting.


3. Build an unforgettable intelligent reminder system

Health management is valuable in persistence, but difficult in memory. I am determined to create a powerful medical reminder module. My idea is that it cannot be just an ordinary alarm clock, but should be like a professional nurse who can distinguish different types of medication, follow-up, appointments, etc., and can flexibly set repetitions.

The AI assistant generated initial code using the UserNotifications framework based on my description. But soon, I discovered a new issue: for the repeated reminder of "once a week", when the user clicks "finish", the system does not automatically create a notification for the next week. This completely goes against the original intention of 'reminder'.

This requires you to implement an intelligent scheduling logic yourself, calculate the next trigger time when the user completes a reminder, and resubmit a local notification. "Deepseek told me this requirement, and I told Claude about it. So, in MedicalNotify Manager, claude added a 'rescheduling' function. When you mark a weekly medication reminder as' completed ', the app will silently schedule a reminder for you at the same time next week. The implementation of this feature has transformed XunDoc from a passive recording tool to an active health guardian.


4. One Step at the Door: App Store's Guide to Overcoming Robbery

When XunDoc finally ran steadily on the simulator and my test machine, I felt victory was within reach. But soon I realized that there was a huge gap between "being able to run locally" and "being able to go to the store" - Apple's review. The tedious process of certificates, description files, permission statements, screenshot sizes... left me confused.

This time, I directly found DeepSeek and said, 'My app has been developed and now needs to be uploaded to the App Store. Please provide me with the most detailed beginner's tutorial.'. ”

DeepSeek's response can be described as nanny level, breaking down the entire process into three major steps: "configuring App ID and certificate", "creating an app in App Store Connect", and "archiving and packaging in Xcode". I'm like playing a game with a strategy guide, following the steps step by step:


Create App ID: In the Apple Developer Console, I followed the instructions to create a unique App ID com. [My ID]. SunDoc.

Getting the certificate done: The most headache inducing certification process, DeepSeek guided me to create "Development" and "Distribution" certificates separately, and patiently explained the differences between the two.

Setting permissions: As the app requires the use of cameras (for photo diagnosis), photo albums (for uploading images), and notifications (for medical reminders), I followed the guidelines and added corresponding permission descriptions one by one in the Infoplist file to ensure that the reviewer can clearly understand why we need these permissions.


Everything is ready, I clicked on "Product" ->"Archive" in Xcode. Watching the progress bar slowly fill up, my heart also reached my throat. Packaging successful! Subsequently, through the 'Distribute App' process, I uploaded my sweat from the past two days to App Store Connect. Of course, it was not uploaded in one go.


5. From 'usable' to 'easy to use': Awakening from three major UI iterations

After the initial excitement of the application being launched, I received some feedback from early users: "There are many functions, but I don't know where to start using them" and "The interface is a bit crowded, making it difficult to find things". This made me realize that my product may be considered "fully functional" in the minds of engineers, but in the eyes of users, it may be "complex and difficult to use".

I have decided to redesign the UI. On my first stop, I found the domestically produced Mastergo. I fed XunDoc a screenshot of its core interface and prompted, 'Please generate several more modern and user-friendly UI design solutions for this home health management application.'. ”

The plan provided by Mastergo has opened my eyes. It weakens the "card" boundary that I previously emphasized, using larger white space and clearer visual hierarchy. It suggests making the bottom tab navigation more refined and introducing a global "+" floating button for quickly recording health data. This is the inspiration for my first iteration plan: shifting from "functional stacking" to "simple and modern". However, although Mastergo's solution is aesthetically pleasing, some of the interaction logic does not quite comply with iOS standards. So, for the second stop, I invited Stitch. I provided it with a complete product introduction, explanations of all functional modules, and the first version of the design drawings, and issued instructions: 'Based on these materials, please fully reproduce XunDoc's complete UI, but follow the iOS Human Interface Guidelines and ensure that the information architecture is clear so that new users can quickly get started.'. ”After he designs it, I will take a screenshot of my UI design and send it to Claude, asking him to help me generate it as much as possible. The above is the page constructed by my Stitch

Claude demonstrated astonishing comprehension. It's not just about drawing interfaces, but also about refactoring the information architecture of the product. It suggests changing the four modes of "AI consultation" (skin, symptoms, reports, medication) from parallel arrangement to a main navigation entrance, where users can choose through icons and brief instructions. At the same time, it redefines the "homepage" as a true "health overview", displaying only the most critical data and today's reminders, while all other features are neatly included in the tab bar. This formed my second iteration plan: deepening from "concise and modern" to "clear structure". Holding Claude's output, I combined the visual inspiration of Mastergo and Stitch, and then let Cluade fine tune step by step. I realized that color is not only beautiful, but also an important tool for conveying emotions and functions. I have differentiated the originally unified blue color scheme based on functional modules: health data uses a steady blue color, AI consultation uses a purple color representing intelligence, and medical reminders use a striking orange color. The icons are also designed to be more linear and lightweight, reducing visual burden. (Actually, this is Deepseek's advice to me) This is the final third iteration plan: adding warmth and affinity into a clear structure.


This journey of UI redesign from Stitch to Claude has made me deeply realize that a successful product is not just about piling up code. It is a dialogue with the user, and design is the language of this dialogue. By allowing different AI assistants to collaborate under my guidance, I successfully transformed XunDoc from an engineer's work to a product that truly considers users.

Now this app has been successfully launched on my App Store. You can search for it directly to use and experience it. I hope everyone can work together to solve problems in the future!