Show HN: I built a daily affirmation iOS app solo — what AI actually helped with
by imMovie | 2026-03-05 11:39:56+00:00
React Native + Expo. No backend. 1–2 hours/day on weekday evenings.

App: https://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.