Last Thursday I had three hours between meetings and an idea I’d been sitting on for six months: a daily Psalms reading app that just shows you the next Psalm and lets you mark it complete. No streaks, no gamification, no email signup. Open it, read, close it.
By 5:47 p.m. it was on TestFlight. Here’s exactly how it happened, every prompt and every wrong turn included.
Hour 1: Scaffolding (and the wrong start)
I opened a new folder, typed claude, and gave it this:
I want to build a simple iOS app called Psalm Daily. It shows the user the next Psalm in order. They can tap to mark it as read. Tomorrow it shows the next one. That’s the whole app. Use Swift and SwiftUI. No backend needed for v1. Store progress on the device.
Claude came back with a plan: project structure, the data model (just a list of Psalms and a “current index” saved to UserDefaults), the views, and a question: “Where do you want me to get the actual Psalm text from? I can include public-domain text in the bundle, or pull from an API.”
I went with the bundled option. Less to break.
Twenty minutes later I had a running iOS app with a placeholder UI showing “Psalm 1” and a button. It was ugly. It worked.
The wrong turn
I asked Claude to add streaks and notifications. It built them. I tried them out. They were fine. Then I deleted both, because they made the app feel like every other Bible app on the market and the whole point was that it shouldn’t.
This is the part of vibe coding nobody talks about: Claude will build whatever you ask for, including the things you shouldn’t ask for. Half of being good at this is being willing to delete what you just built.
Hour 2: Make it beautiful
I sent Claude a screenshot of an app I love (the Stoic app, if you’re curious) and said:
Make Psalm Daily feel like this. Calm, generous spacing, big serif headlines, no distractions. The current Psalm number should feel important. The reading should be easy on the eyes.
Forty-five minutes of back and forth and the UI looked like something I’d be proud to ship. Big “Praying the Psalms” header, the day of the week in a small caps subtitle, the Psalm rendered in a beautiful serif, a single soft button at the bottom: “I’ve read this.”
This is where Claude really earned its keep. I have opinions about typography but I cannot for the life of me write Swift UI from scratch. Claude wrote it. I directed it.
Hour 3: Ship
The last hour was the boring stuff that used to take me a week:
- Set up the iOS app icon (Claude generated 4 versions, I picked one)
- Wired up the launch screen
- Filled out the App Store metadata
- Created the App Store screenshots
- Submitted to TestFlight
I’m going to be honest: the App Store submission process is still a pain. Apple makes you do it. Claude made it 10× faster but it’s not 10 minutes — it’s an hour.
At 5:47 p.m. I sent the TestFlight invite to Dawson. He installed it on his phone. It worked on the first try.
The whole prompt list
For people who want the receipts, here are the actual prompts I used in order:
- The scaffolding prompt above
- “Add the full text of all 150 Psalms in public-domain (KJV) as a bundled JSON file”
- “Persist the current Psalm index to UserDefaults so it survives app restarts”
- “Make the UI feel calm and generous — here’s a screenshot for inspiration” (with image)
- “Use Newsreader as the headline font and SF Pro for body”
- “Add a soft completion button at the bottom that animates when tapped”
- “Generate an app icon — minimal, off-white background, single thin orange cross”
- “Help me write the App Store description”
- “What metadata do I need to submit to TestFlight?”
That’s nine prompts. Three hours. One real iOS app on TestFlight.
What I’d do differently next time
One thing: I’d start with the App Store submission stuff first, not last. The boring metadata work fills your brain in a way that makes creative work hard. Get it out of the way while you’re still mentally fresh.
Other than that — honestly, I’d do exactly the same thing. Every step worked. Every prompt worked. The hardest part was keeping the scope small and resisting the urge to add features Claude was happy to build for me.
If you’ve been sitting on an idea, your three hours starts now.
Ready to build your own?
Our 3-Hour Build Challenge walks you through every step. Start your free 7-day trial today.
Start free trial