How One Good Thing Was Vibe-Coded with Claude Code: Stack & Pricing
October 7, 2026 · 1307 words
| TL;DR | |
|---|---|
| What it is | An iPhone and iPad app that shows one original idea a day, then tells you to close it |
| Builder | Non-developer (a self-described marketer, not an engineer); first iOS app |
| AI tool | Claude Code, used as a pair programmer |
| Stack | Swift, SwiftUI, Firebase, Cloud Functions |
| Time to launch | Not disclosed (3 months of research before any code; 14 builds before App Store approval) |
| Revenue | Not disclosed (pricing only: US App Store lists $3.99/month, $24.99/year, $99.99 lifetime) |
| Source | Show HN, March 4, 2026 |

Most wellness apps want you to stay. One Good Thing wants you to leave after two minutes.
It is a small iOS app built by a marketer with Claude Code. It has 26 ratings averaging 4.5 stars on the US App Store, and it sells a Premium subscription. Revenue is not disclosed, so this teardown is about how it was built and how it charges.
The one point of this post: with AI writing the code, the builder's real job became testing, and the pricing had to fit the product's promise.
The problem it solves
The founder's pitch is simple. You get one thought per day: a headline of up to 10 words and a body of up to 120 words. You "carry" it (save it) or "let go." Then you close the app.
The homepage leans into this. It promises no ads, no feeds and no streaks. The ideas come from twelve fields, including philosophy, history, math and language.
Before writing any code, the founder spent three months on research and wrote 1,250 idea cards across 12 categories. That content library is the real product. The code just delivers it.
How it was built
The founder describes themself as a marketer, not an engineer. This was their first iOS app. They had no prior Swift, SwiftUI or Firebase experience, and built it with Claude Code as a pair programmer.
Here is the stack in plain terms:
- Swift and SwiftUI are Apple's language and toolkit for building iPhone screens.
- Firebase is Google's hosted backend. It stores user data without you running a server.
- Cloud Functions are small pieces of server code that run on demand.
Picking which card you see uses what the founder calls a "Resonance Loop" algorithm. It leaves 20% room for exploration so you don't only see one kind of idea.
The most useful part of the post is about bugs. The app needed 14 builds before Apple approved it. The founder's own testing caught problems the AI never flagged: notifications that silently stopped after day 7, a widget showing the wrong day because of time zones, and a sync bug after reinstalling.
"The underrated skill in AI-assisted development is not better prompting." — supertim on Hacker News
The answer was thorough QA (quality assurance, meaning testing the app like a picky user would).
How it makes money

The pricing has changed since launch, which is worth studying.
At launch (March 2026, per the HN post): a 7-day free trial, then €1.99 a month or €39.99 for lifetime access. After the trial, content was progressively blurred instead of hidden behind a hard paywall. A paywall is the screen that blocks features until you pay.
Now (September 2026): the core is free forever. You get the daily idea, your saved collection and a taste of the extra features. Premium adds more "Ask" questions per day, all "Margins" (links from today's idea to ideas you saved), and your full "Range" history. The annual plan has a 7-day free trial.
The US App Store lists these in-app purchases:
| Plan | Price (US store) |
|---|---|
| Free | $0, daily idea and collection |
| Premium monthly | $3.99 |
| Premium yearly | $24.99 (7-day trial) |
| Lifetime | $99.99 |
The move from "trial, then pay" to "free forever, pay for depth" matters. An app that asks you to close it can't rely on daily habit loops to sell upgrades. A free core keeps people around long enough to want the extras.
First users
The founder hasn't shared download or subscriber numbers. The public signals are the 26 ratings at 4.5 stars on the US store and a quiet Show HN post. The homepage shows a 4.7 rating, which may be a different store or an older snapshot.
That is thin, and I'd rather say so than guess. What stands out is the preparation: 1,250 cards written before launch means the app never runs out of content in year one.
What to copy
- Build the content before the code. An AI can write the app in weeks. It can't write your 1,250 cards.
- Make your pricing match your promise. An anti-engagement app shouldn't use pushy paywalls. The blur-then-free-core approach fits the brand.
- Budget for QA, not just prompts. Plan real-device testing across days, time zones and reinstalls. That is where AI-written bugs hide.
- Expect to change prices. The founder moved from euros-and-trial to a free core plus three paid options within months. Treat your first price as a test.
If you vibe-code this
An iOS subscription app with a Firebase backend has a few classic weak spots. These are checks for the app type, not claims about One Good Thing.
- Never let the app write its own "premium" flag. If Firestore security rules allow it, any user can mark themselves as paid. Firestore is Firebase's database, and its rules decide who can read or write each document. See Firebase security rules for vibe coders.
- Check purchases on the server. A Cloud Function should confirm the signed App Store transaction before unlocking anything.
- Keep AI keys out of the app bundle. Features like "Ask" call an AI model. Put that key in a Cloud Function, never in Swift code. See environment variable security.
- Treat user questions as untrusted input. A free-text "Ask" box can carry prompt injection. See prompt injection.
Here is a Firestore rule that lets users edit their own profile but never their subscription fields:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{uid} {
allow read: if request.auth != null && request.auth.uid == uid;
allow update: if request.auth != null && request.auth.uid == uid
&& !request.resource.data.diff(resource.data)
.affectedKeys().hasAny(['premium', 'premiumUntil']);
// premium fields are written only by a Cloud Function (Admin SDK)
}
}
}
Built a subscription app with Claude Code and want someone to check the paywall logic? Email me at [email protected] for an audit.
Key takeaway
A marketer shipped a polished iOS app with Claude Code. The code was the fast part. The research, the 1,250 cards, the 14 builds of testing and the pricing rethink were the slow parts, and they are what make it a product.
More case studies: Vibe-coded apps making money · Security basics: Vibe coding security guide
Sources
- supertim, "Show HN: One Good Thing – one thought a day, then asks you to close the app," Hacker News, March 4, 2026: https://news.ycombinator.com/item?id=47247689
- One Good Thing homepage (checked September 2026): https://onegoodthing.space
- One Good Thing on the US App Store (checked September 2026): https://apps.apple.com/us/app/one-good-thing-daily-thought/id6759391105