A local-first Sudoku progressive web app built with Next.js (App Router), React, and TypeScript.
- Unique puzzle generation
- Four technique-scored difficulties: Easy, Medium, Hard, Expert
- Daily Sudoku mode with deterministic date-based puzzles
- Background puzzle generation with cache-backed prewarming
- Configurable hints and lives
- Undo/redo and annotation (notes) mode
- Mistake highlighting against the solution
- Deterministic points scoring with per-difficulty and daily totals
- Stats tracking (overall, by difficulty, puzzle streak, daily streak, points)
- Auto-save and restore of your current game
- Optional Nostr profile and encrypted backup/restore flows
- Optional passphrase protection for locally stored Nostr keys
- Installable PWA
The hosted PWA is available at slobbe.github.io/sudoku.
bun run dev- Start local dev serverbun run build- Build production bundlebun run start- Run production serverbun run lint- Run lint checksbun run test- Run unit testsbun run test:e2e- Run Playwright smoke tests
//play/daily/daily/:date(example:/daily/2026-02-26)/settings/statistics/overall/statistics/daily/profile/privacy
- Puzzle progress and stats are stored locally in your browser (IndexedDB-first)
- Existing
localStoragesaves are migrated safely into IndexedDB when available - If IndexedDB is unavailable or fails, saves temporarily fall back to local storage
- No account or server backend is required
- Nostr relay traffic only occurs on explicit user actions (no passive startup sync)
- Backup payloads are encrypted (
nip44preferred,nip04fallback) - Restore uses a confirmation step before local browser data is overwritten
- Successful restore rehydrates the in-memory app state immediately
- Local Nostr keys can be stored encrypted with an optional passphrase
This monorepo also contains reusable workspace packages:
@slobbe/sudoku-board-packages/sudoku-board/README.md@slobbe/sudoku-engine-packages/sudoku-engine/README.md
app/- Next.js App Router entry/layout and global stylessrc/components/sudoku-app.tsx- Main application UI and state flowsrc/lib/sudoku.ts- Compatibility re-export to engine packagepackages/sudoku-board/- Reusable board packagepackages/sudoku-engine/- Reusable engine package
Contributor workflows, validation expectations, deployment, and release procedures are documented in CONTRIBUTING.md.