The problem
I wanted a way to build habits with my kids and make growth fun.
How I built it
01 · Prototype
A quick HTML prototype to prove the experience.
02 · Spec
A full PRD with the product rules, then a build brief: the stack, the build order, and what the prototype taught me.
03 · Build
Built with Claude Code in small increments, reviewing each milestone. The first working version shipped in a day.
04 · Grow
Over the summer it grew from a soccer trainer into a general habit platform: onboarding, multiple accounts and roles, teams and groups, and a library of ready-made programs.
Product rules, written into the code
Effort earns points, not performance. Family points count lifetime earnings across all kids, so they never drop when a kid spends. Tier celebrations fire once across devices. A missed day breaks a streak quietly, and a time-off pause protects streaks.
The ledger, in miniature
Try it. Check off a task, undo it, then replay a completion from another device.
Today · demo kid
Ledger · append-only
Balance 0
- No entries yet. Check off a task.
Nothing is edited or deleted. The balance is the sum of the entries, so it can always be checked.
Build details
- A ledger, not a balance. Points are append-only and balances are always derived. Each task-day has one stable reference, so completing twice can't double-pay, and undoing nets to exactly zero even if the point value changed in between. Unit-tested.
- No server, real guardrails. A static export on Firebase's free tier. All security lives in Firestore rules, tested in the emulator in CI alongside lint, typecheck, unit tests, and the build.
- The guided session engine. An explicit state machine: 60-second drills, Web Audio beeps and spoken cues, SVG drill animations with a reduced-motion fallback, and a screen wake lock, all working offline on a shared iPad.
- Spec first, then AI. The build brief carried the prototype's hard lessons, like iOS audio unlock and no embedded YouTube in an installed app. Claude Code did the typing in reviewed increments; Claude is co-author on about 160 of 191 commits.
Next.js 16 (static export) · TypeScript · Tailwind CSS v4 · Firebase Auth & Firestore (offline) · Firebase Hosting · PWA with a custom service worker · Vitest · GitHub Actions · Claude Code
What changed
- The whole family used it through the summer.
- It became my working proof of how fast one person can now take an idea from spec to a real, tested product with AI.
In my words
If you want growth to stick, make it fun.