Files
Vincent Bourdon 16fd4c8c36 docs: cadrage initial Storytime (specs par jalon, roadmap, CLAUDE.md)
Lecteur d'histoires cadenassé pour le coucher (Android/Flutter).
- CLAUDE.md : principes craftsmanship/TDD/clean code/clean archi + decisions techniques
- ROADMAP.md : suivi haut niveau des 7 jalons, a tenir a jour par etape
- docs/specs/ : specs completes decoupees par jalon, etapes en sous-fichiers
- .gitignore Flutter (pubspec.lock versionne, projet applicatif)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 17:03:33 +02:00

2.1 KiB

0.3 — Socle transverse

Objectif

Fournir les briques transverses réutilisées par toutes les features : gestion d'erreur typée, thème, navigation, et amorce de DI Riverpod.

Périmètre & hors-périmètre

  • Inclus : Result/Failure, thème Material 3 (palette douce « coucher »), router, organisation DI.
  • Exclus : providers métier (créés par chaque feature).

Dépendances

0.1, 0.2.

Conception

  • core/error/ :
    • Failure (classe scellée/sealed) avec sous-types de base : NetworkFailure, NotFoundFailure, UnexpectedFailure. Les features ajouteront les leurs.
    • Result<S> : type sealed Ok<S>(value) / Err(Failure), avec helpers (map, when, fold). (Ou adopter dartz/fpdart Either — choisir et figer dans CLAUDE.md §7.)
  • core/theme/ : AppTheme Material 3, couleurs douces, gros composants tactiles (cible enfant), contrastes lisibles le soir.
  • core/router/ : router (go_router ou Navigator 2 simple) avec routes nommées : child (défaut), parentGate, parent. Pas encore d'écrans réels.
  • core/di/ : conventions d'organisation des providers (un fichier providers.dart par feature, agrégés). ProviderScope racine dans main.dart.

Plan TDD

  1. Red : result_test.dartOk(1).map((v) => v+1) donne Ok(2) ; Err(f).map(...) reste Err(f) ; fold/when aiguillent correctement. Échoue (type absent).
  2. Green : implémenter Result/Failure.
  3. Red : theme_test.dart (widget) — un MaterialApp avec AppTheme expose useMaterial3 == true et la couleur primaire attendue.
  4. Green : implémenter AppTheme.
  5. Refactor : nettoyer, documenter les helpers.

Definition of Done

  • Tests result_test.dart et theme_test.dart verts.
  • App démarre avec le thème appliqué et le router en place (route child placeholder).
  • tool/check.sh passe.
  • Étape 0.3 cochée dans ROADMAP.md ; choix Result maison vs fpdart consigné dans CLAUDE.md §7.

Risques / notes

  • Ne pas sur-concevoir le Result : juste ce que les use cases consommeront. Étoffer au besoin réel.