Offline-first Flutter app to help children learn chess with lessons, puzzles, and AI games.
- Lessons: one complete pawn lesson flow (
explanation,guided_move,free_play) - Puzzles: generated offline puzzle catalog (
gen_*packs) with line-based solving - Play: game vs Stockfish AI (3 skill presets)
- Local-first persistence with Drift/SQLite
- Future-ready user model (
local_user_id, nullableremote_user_id,owner_user_id,sync_state) - Data-driven content via JSON assets and manifest
- Flutter + BLoC + GetIt + Drift (SQLite)
dartchessfor move validation/rulesstockfishfor local AI opponentflutter_chess_boardfor board rendering
lib/core: engine, opponents, content, storage, modelslib/features: home, lessons, puzzles, playlib/shared: reusable UI/themeassets/content: lessons, puzzles, manifestdocs: ADRs and per-service docs
flutter pub get
dart run build_runner build --delete-conflicting-outputs
flutter rundart format .
flutter analyze
flutter testGenerate curated puzzle packs from lichess_db_puzzle.csv.zst:
dart run tool/puzzles/generate_lichess_packs.dartIf Android runs fail on this machine, install Android SDK cmdline-tools and accept licenses:
flutter doctor --android-licensestest/golden/golden_smoke_test.dart is included and currently skipped by default.
Unskip and run with --update-goldens once reference images are approved.