projects/2026 private
Backyard Adventures
A coding game for pre-readers, set in our own backyard.
- TypeScript
- PixiJS
- Fastify
- Drizzle
- SQLite
- React

My three kids can't read yet, but they can follow arrows. Backyard Adventures teaches sequencing and loops by having them program a cartoon version of themselves through mazes set in our backyard playground. It runs only on our home network.
How it plays
- Programs: a strip of ten arrow blocks. Each block can carry a repeat count, shown as a single-digit badge, so a loop doesn’t use up an extra slot. There’s no text in the kid-facing UI.
- Levels: generated procedurally, with bushes, rocks and stumps as obstacles, keys that open doors (sometimes hidden), and stickers to collect for their sticker book. A solver checks every generated level is beatable within ten blocks. Difficulty rises one parameter at a time.
- Progress: unlocks build up as they play, and unlocked levels stay replayable.
How it’s built
- Game: PixiJS, as an installable web app on the kids’ iPad. The sequencer, generator and solver are covered by unit tests.
- Parent admin: a Vite + React panel for each kid’s progress and daily play time.
- API: Fastify + Drizzle on SQLite, serving both apps and the API from one process. The API and admin share zod schemas through a shared workspace.
- Deployment: a single multi-stage Docker image on the home server. The kid routes are unauthenticated by design, so they’re LAN-only and never forwarded past the router. Daily limits reset at local midnight, not UTC.