I built a daily affirmation iOS app solo — what AI actually helped with

React Native + Expo. No backend. 1–2 hours/day on weekday evenings.App: apps.apple.com/app/id6758666723

Why this app

I built this app because I needed it myself. For a while my days kept ending and I couldn't name what actually went right. I tried affirmations skeptically. Surprisingly, they helped — not by making hard things easy, but by making them easier to start. That small shift mattered. So I built something I was already using. Background: 13 years as a frontend architect working with monorepos, distributed state, and CI/CD. For this project I intentionally chose something simple. The goal wasn’t technical complexity — it was product thinking and shipping something end-to-end. Affirmation apps look simple. The real challenge is the loop: showing meaningful content at the right moment, making it feel personal, and helping it become a habit. Being the primary user gave me strong opinions about the experience. That’s a real advantage when building solo.

Stack

React Native with Expo. No backend. Local storage for preferences, push notifications for reminders, and client-side content curation. Why not SwiftUI? I'm simply faster in React. Expo handled notifications, App Store submission, and OTA updates without requiring deep iOS infrastructure work.

What AI actually did — and didn’t

The generic “AI helped me code” narrative isn’t very useful.

Where AI helped

• Navigation structure and state patterns — about 70–80% usable on first pass • Notification scheduling skeleton • Structuring ~200 affirmations into categories and tags • Drafting initial App Store copy • Surfacing edge cases when describing features That saved a meaningful amount of time.

Where AI failed

• Onboarding design.* AI suggestions were functional but generic. Good onboarding for an affirmation app requires understanding the emotional context — why someone opens it at 7am and what friction kills the habit before it forms. I scrapped the generated flow and rebuilt it manually. • Notification timing.* AI suggested a single daily reminder. Instead I designed three slots: • morning intention • midday reset • evening reflection That decision came from thinking about real usage. AI can implement decisions. It usually can’t make them. I also discovered a subtle bug in the AI-generated notification scheduling code that occasionally caused duplicate reminders when the app was backgrounded. Fixing it required real debugging and reading Apple’s background task lifecycle documentation. AI suggestions are useful — but they should always be treated as hypotheses, not production-ready answers.

Admin panel

I built a small content admin panel early to manage affirmations without redeploying. Using the app daily quickly created new ideas: “This affirmation needs voice narration.” “This one works better with a background video.” Because the content schema was flexible, adding media didn’t require architectural changes. Lesson: if you're the primary user, build content control early. I waited until week 7.

Timeline

• Weeks 1–2: architecture and data model • Weeks 3–4: core screens • Week 5: onboarding • Week 6: notifications and timezone handling • Week 7: admin panel and media support • Week 8: TestFlight and App Store release Total time: ~8 weeks working evenings. AI likely saved around 20–30% of implementation time. The harder parts — product decisions, UX judgment, and debugging — didn’t compress nearly as much.

Worth it?

Downloads are still modest. But my alarm is now the affirmation from the app I built. That’s the real outcome. Shipping solo reinforced something important: the hardest part of development isn’t writing code. It’s understanding the real problem you’re solving — and making thoughtful decisions about how to solve it.

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论