No description
- JavaScript 95.7%
- CSS 3.5%
- HTML 0.8%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
Build and Deploy / deploy (push) Successful in 42s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QaKXNUxZW5K5QA5Wz5qsZU |
||
| .forgejo/workflows | ||
| .github | ||
| docs | ||
| k8s | ||
| src | ||
| tests | ||
| .gitignore | ||
| eslint.config.js | ||
| GEMINI.md | ||
| index.html | ||
| package-lock.json | ||
| package.json | ||
| PLAN.md | ||
| README.md | ||
| vite.config.js | ||
Math Fun
Common Core math practice for 2nd and 3rd graders — 29 activities covering the grade 2 and grade 3 standards, in a Catppuccin-themed React app.
Stack
- React 19 + Vite 8, React Router (hash routing so static hosting needs no rewrites)
- Tailwind CSS v4 with Catppuccin Latte (light) and Mocha (dark) tokens
- No backend: progress (stars, streaks, chosen level) lives in
localStorage - Built to
dist/, synced to a MinIO bucket and served through Caddy behind a Gateway APIHTTPRoute(k8s/)
Commands
npm install
npm run dev # local dev server
npm run lint
npm test # validates every question generator
npm run build # -> dist/
npm run preview
Layout
src/
app/ registry.js (the activity list), App.jsx (routes), Home.jsx (menu)
content/ one question pack per topic + shared SVG visuals
engine/ QuizEngine + answer input types shared by every quiz activity
games/ custom games (Asteroid Defender, Memory Match, Set the Clock)
components/ Shell, Card, ScoreBar, Celebration, ThemeToggle
state/ progress (stars/streaks) persisted per activity
theme/ Catppuccin tokens and the light/dark/system provider
Adding games and questions
See docs/ADDING_CONTENT.md. Short version: append to a
list in src/content/, or drop in a new pack and add one line to
src/app/registry.js. Routes, menu cards, levels, hints, scoring and theming are
generated from that registry.
Standards covered
Grade 2: 2.OA.A.1, 2.OA.B.2, 2.OA.C.3, 2.OA.C.4, 2.NBT.A.1–A.4, 2.NBT.B.5, 2.NBT.B.7, 2.NBT.B.8, 2.MD.A.3, 2.MD.C.7, 2.MD.C.8, 2.MD.D.10, 2.G.A.1–A.3.
Grade 3: 3.OA.A.1–A.4, 3.OA.B.5, 3.OA.B.6, 3.OA.C.7, 3.OA.D.8, 3.OA.D.9, 3.NBT.A.1, 3.NBT.A.3, 3.NF.A.1–A.3, 3.MD.A.1, 3.MD.A.2, 3.MD.B.3, 3.MD.C.6, 3.MD.C.7, 3.MD.D.8, 3.G.A.1, 3.G.A.2.