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>
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
# 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.dart` — `Ok(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.
|
||||
Reference in New Issue
Block a user