16fd4c8c36
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>
2.1 KiB
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>: typesealedOk<S>(value)/Err(Failure), avec helpers (map,when,fold). (Ou adopterdartz/fpdartEither— choisir et figer dans CLAUDE.md §7.)
core/theme/:AppThemeMaterial 3, couleurs douces, gros composants tactiles (cible enfant), contrastes lisibles le soir.core/router/: router (go_routerou 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 fichierproviders.dartpar feature, agrégés).ProviderScoperacine dansmain.dart.
Plan TDD
- Red :
result_test.dart—Ok(1).map((v) => v+1)donneOk(2);Err(f).map(...)resteErr(f);fold/whenaiguillent correctement. Échoue (type absent). - Green : implémenter
Result/Failure. - Red :
theme_test.dart(widget) — unMaterialAppavecAppThemeexposeuseMaterial3 == trueet la couleur primaire attendue. - Green : implémenter
AppTheme. - Refactor : nettoyer, documenter les helpers.
Definition of Done
- Tests
result_test.dartettheme_test.dartverts. - App démarre avec le thème appliqué et le router en place (route
childplaceholder). tool/check.shpasse.- Étape 0.3 cochée dans
ROADMAP.md; choixResultmaison vsfpdartconsigné dans CLAUDE.md §7.
Risques / notes
- Ne pas sur-concevoir le
Result: juste ce que les use cases consommeront. Étoffer au besoin réel.