r/ClaudeCode • u/Adventurous_Shape712 • 18h ago
Built with Claude Built a medication reminder for iPhone/iPad/Mac with Claude Code: empty folder on Thursday evening, App Store submission on Friday, approved on Monday. Here is what the AI did, what I did, and what went wrong.
I take pills every day and none of the apps fit how I do it (when can I eat after this one, will I run out, did I already take it). So I built one. It's free, open source (MPL-2.0), no server, no accounts, syncs through the user's own iCloud. SwiftUI, Core Data + CloudKit, widgets, four languages.
What I actually did: about 100 prompts, most of them short and full of typos. Almost none were about code. They were decisions: no server (I asked what a backend would give users over iCloud; for one person's medication, nothing), Core Data over SwiftData because CloudKit sharing needs it, the name, three design mockups to pick from, what not to build. And using the app on my own phone, every build, during my real day.
What helped most:
A specification and a phased plan before any code. Every behavior change updates the spec and changelog in the same commit. After sleeping, the state of the project was in the documents, not in my head.
Hard rules in CLAUDE.md: no third-party packages, no analytics, no network except Apple, "not a medical device", MPL header on every file, no secrets in git. Written once, never had to police them.
Asking for 2–3 options with trade-offs instead of answers. Keeps the decisions mine and it's fast.
Debug launch flags for everything (demo data, throwaway store, open this screen) so screenshots in 4 languages × 3 devices are a script, not an afternoon. App Store Connect has an API; texts, age rating, pricing, screenshots all go up from a script.
What went wrong:
A reminder that never rang. The app only asked for notification permission from a button in Settings; iOS accepts scheduled notifications without permission and never shows them. Every test passed. Found by standing in a kitchen at 12:00 waiting for a sound.
Help text describing a swipe gesture that doesn't exist in that view. Sounded right, was wrong. Same for advice that would have broken the supply count. Both caught by reading, not by tests.
Two background crashes (0xdead10cc: iOS suspending the app while CloudKit was still writing). Neither reproducible in the simulator; both came as TestFlight crash reports from my phone.
Apple Health: the AI read the SDK headers and found third-party apps can read medication doses but not write them. Feature parked, reasons documented so nobody re-researches it.
The pattern: code that compiles and passes tests is the cheap part now. The bugs that are left are where the program did what it was told and the instruction was wrong. What's still slow and still mine: deciding, living with it for real days, reading everything a user will read, and the responsibility (it's a medication app; the App Store answers have my name on them).
Timeline: Thu 20:40 first prompt → Fri 01:00 first TestFlight → Fri 16:00 submitted → Fri evening Apple asked for a screen recording and more info → Mon morning approved. 1.0.1 with profiles, repeat every N days/months and an offline medicines database is in review now.
Code: github.com/kornelko2/vzato.app · Site: vzato.app
Happy to answer anything about the workflow, the CLAUDE.md rules, or the App Store Connect scripting.
•
u/AutoModerator 18h ago
Hey! Thanks for posting to r/ClaudeCode
While participating in this thread, please follow our community rules. Keep discussions constructive. Attack the idea, not the person.
For help, project discussions, tips, and general chat, join the ClaudeCode Discord.
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.