Gamified coding education for kids 8–12. A content-driven React app where JSON packs define every lesson, map, and story beat.
npm run dev # Start dev server
npm run build # Production build → dist/
npm run preview # Serve production build locally
npm run typecheck # TypeScript type check (tsc --noEmit)
npm run lint # ESLint (--max-warnings=0)
npm run test # Vitest (unit + component + invariant)
npm run test:e2e # Playwright (critical journeys only)
npm run format:check # Prettier format check
npm install # Install dependencies (also sets up Husky pre-commit hook)
All gates must pass before merging: lint, typecheck, test, format:check, build. test:e2e runs in CI on every PR.
Coding standards, patterns, and the testing strategy for Claude and Codex live in the shared .claude/skills/ docs. Claude reads CLAUDE.md, Codex reads AGENTS.md, and both entrypoints point at the same guidance. Start with .claude/skills/README.md for the index, and .claude/skills/testing-strategy.md for how validation works in this repo.
See docs/ for planning documents:
docs/ARCHITECTURE.md— system design and tech stackdocs/PRD.md— product requirementsdocs/EPICS.md— epics listdocs/ROADMAP.md— sequencing and milestonesdocs/CONTENT_SCHEMA.md— content pack JSON schemadocs/stories/— implementation tickets per epic
MIT — see LICENSE.