Local‑first spelling practice for kids: hear the word, build the spelling, get gentle feedback, and retain it through spaced repetition. All progress stays in the browser.
Fast to start, safe for kids (no accounts / tracking), and powered by a lightweight SM‑2 variant + optional AI word generation.
- 🔊 Speech (Web Speech API)
- 🧠 Spaced repetition (simplified SM‑2)
- 📝 Hint + immediate answer reveal
- ⭐ Auto rating (exact / near miss detection)
- 🤖 (Optional) AI word + hint generation
- 💾 Import / Export JSON backup
- 🔒 100% local data (IndexedDB + localStorage)
git clone <repository>
cd be-spelling
npm install
cp .env.local.example .env.local # add OPENROUTER_API_KEY if you want AI generation
npm run dev
# open http://localhost:3000Want production?
npm run build && npm startnpm run dev # develop (Turbopack)
npm run build # production build
npm start # run built app
npm run lint # lint sources/Study flow (speech → build → hint → check → rate → next)/manageGenerate, list, delete, import/export words/settingsPrompt template + voice / speech controls
- Product narrative & scope:
PRODUCT.md - Architecture & data contracts:
AGENTS.md - Scheduler logic:
lib/srs/scheduler.ts - Storage layer:
lib/storage/*
Next.js 15 (App Router, Turbopack) · React 19 · TypeScript (strict) · Tailwind CSS v4 · Dexie (IndexedDB) · Web Speech API · OpenRouter (server route only) · uuid
No accounts, no analytics, no network calls except on‑demand AI generation (if configured). Your learner’s progress never leaves the device.
Small PRs welcome. Keep:
- Types & invariants in sync with
AGENTS.md - No direct Dexie access in UI (use repositories)
- Mobile / touch ergonomics ≥44px targets
- Local‑first principle (no surprise network writes)
See LICENSE.
–– Happy spelling! 🌟