Little browser games for the phone, invented by Alisa, age 5, and built with a little help from Claude Code.
▶ Play at games.vreshch.com - no install, no account, no ads.
A 5-year-old cannot type code - but she can draw, talk, and play. That turns out to be enough:
- Alisa brings the requirements - usually a sketch drawn on paper.
- She dictates what the game should do to Claude Code through the microphone.
- Claude Code builds it; dad reviews the pull request and merges.
- Alisa plays it on the phone and dictates changes. Repeat until it is fun.
Every game on the site went through that loop. The result is a real production website: tested, deployed automatically, and open source - this repository is the whole thing.
| Scary Smile | Perot | Spranki | Crystal Rooms |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
| Tap the smile through 7 stages until it is a monster. | Tap the parrot, say something; it squawks it back pitched up. | Beat toy - tap characters, each adds a looping voice. | 3D crystal caves - walk, collect letter keys, spell a word out loud. |
Privacy: Perot uses the microphone, but no audio ever leaves the device - the clip is played back locally and thrown away. Nothing is recorded, uploaded, or stored.
Next.js (App Router) + React + TypeScript strict + Tailwind CSS v4. The 3D game uses three.js via react-three-fiber; all sound is WebAudio-synthesized (no audio assets) and the letters are spoken with the Web Speech API. Unit tests are Vitest, the browser smoke is Playwright, both run in CI.
npm install
npm run dev # http://localhost:3000
npm run verify # type-check + lint + format check + unit tests + build
npm run test:e2e # Playwright smoke against a prod buildDrop a component in src/components/, a page in src/app/<slug>/, and an entry in
src/lib/games.ts - the home grid, sitemap, and page metadata pick it up.
Push to master. CI builds ghcr.io/vreshch/kids-games, deploys the kids-games Swarm stack
behind Traefik, then fails the run unless https://games.vreshch.com/health reports the
deployed commit. Never deploy by hand.
Repo secrets: SERVER_HOST, SSH_PRIVATE_KEY (environment production).



