Numora — A Math Quest
A single-file, mobile-first math practice game covering Addition, Subtraction, Multiplication, and Division — built to make math practice feel like a game kids actually want to open, instead of short-form content.
Play it live ← replace with your GitHub Pages link once deployed (see below)
Features
- 4 operations × 10 progressively harder levels (40 levels total)
- XP, stars, streak combos, and a per-question countdown ring
- Fully synthesized sound effects (Web Audio API) — zero audio files, zero load time
- A signature “gem fly” animation: correct answers visibly fly into your XP counter
- Confetti celebration on a perfect (3-star) level clear
- Progress saved automatically in the browser — no login or account required
- Zero dependencies, zero build step — one HTML file, runs anywhere
Why these choices
- Single HTML file, no framework: for a game this size, a build pipeline (React/webpack/etc.) adds setup and deployment friction without adding capability. Vanilla JS keeps it instantly runnable and easy to read top to bottom.
- Synthesized audio over sound files: using the Web Audio API’s oscillators to generate tones mathematically means no asset loading, no licensing questions, and a smaller footprint.
- Separated question-generation from rendering: each operation’s difficulty curve lives in its own pure function (
genAddition, genSubtraction, etc.) with zero DOM code inside it — that separation is what makes it easy to add a 5th mode or tune difficulty without touching the game loop.
localStorage for persistence: no backend needed for a single-player experience; progress is tied to the browser it’s played in.
Tech stack
HTML5, CSS3 (custom properties for per-operation theming), vanilla JavaScript (ES6+), Web Audio API, SVG (for the countdown ring). No frameworks, no build tools, no npm packages.
Running it locally
- Clone this repo
- Open
index.html directly in a browser — or, for auto-reload while editing, use the VS Code Live Server extension: right-click index.html → “Open with Live Server”
No installs, no npm install, no server required.
Deploying it for free (GitHub Pages)
- Push this repo to GitHub
- Go to Settings → Pages
- Under “Build and deployment,” set Source to
Deploy from a branch, branch main, folder / (root)
- Save — GitHub gives you a live URL like
https://yourusername.github.io/numora-math-game/ within a minute or two
Roadmap / ideas for extending it
- 5th “Mixed Mode” combining all four operations
- Adaptive difficulty based on per-operation accuracy history
- A dark/light theme toggle
- Additional badge/achievement system beyond stars
License
MIT — see LICENSE.