projects/2026 private

Backyard Adventures

A coding game for pre-readers, set in our own backyard.

  • TypeScript
  • PixiJS
  • Fastify
  • Drizzle
  • SQLite
  • React
A maze level from Backyard Adventures

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.