Michael Jenkins

Builder / Side project

Side project · 2026

Trellis: a family habit app, built with AI

Kids work through guided soccer drills and daily check-offs, and every completed task earns points toward rewards the whole family shares. From a quick prototype and a written spec to a working, installable app in a day, then grown over the summer into a multi-account habit platform.

My role
Designed and built it myself, with AI
First version
Shipped in a day
The summer
191 commits over about 15 build days
Result
The whole family used it all summer

The problem

I wanted a way to build habits with my kids and make growth fun.

How I built it

  1. 01 · Prototype

    A quick HTML prototype to prove the experience.

  2. 02 · Spec

    A full PRD with the product rules, then a build brief: the stack, the build order, and what the prototype taught me.

  3. 03 · Build

    Built with Claude Code in small increments, reviewing each milestone. The first working version shipped in a day.

  4. 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

Praise effort, not outcome.Never compare siblings.Never shame a missed day.

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

  1. 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.

More from the workbench

Belovd →

Every part of a product, built alone.