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,34 @@
|
||||
# 2.3 — UI lecteur + contrôleur Riverpod
|
||||
|
||||
## Objectif
|
||||
Offrir un lecteur utilisable par l'enfant : gros boutons lecture/pause,
|
||||
précédent/suivant, barre de progression, titre de l'histoire en cours.
|
||||
|
||||
## Périmètre & hors-périmètre
|
||||
- Inclus : contrôleur Riverpod (`AsyncNotifier`/`Notifier`) consommant les use cases, widget lecteur.
|
||||
- Exclus : la liste des histoires (jalon 4) ; ici on teste avec une file en dur.
|
||||
|
||||
## Dépendances
|
||||
2.1, 2.2.
|
||||
|
||||
## Conception
|
||||
- **Presentation** (`features/playback/presentation/`) :
|
||||
- `PlaybackController` (Riverpod `Notifier`) : expose `PlaybackState`, méthodes `play/pause/next/previous/seek` déléguant aux use cases ; s'abonne à `WatchPlaybackStateUseCase`.
|
||||
- `PlayerView` (widget) : grand bouton central play/pause (icône claire), boutons précédent/suivant, `Slider` de progression, titre + vignette.
|
||||
- Composants tactiles larges, lisibles le soir (thème de 0.3).
|
||||
- Pas de logique métier dans le widget : tout passe par le contrôleur → use cases.
|
||||
|
||||
## Plan TDD
|
||||
1. **Red** : `playback_controller_test.dart` — avec use cases mockés, `play()` appelle `TogglePlayPauseUseCase` ; l'état du contrôleur reflète les `PlaybackState` émis.
|
||||
2. **Green** : implémenter le contrôleur.
|
||||
3. **Red** : `player_view_test.dart` (widget) — tap sur le bouton play déclenche `controller.play` (provider overridé par un mock) ; l'icône bascule play/pause selon l'état ; le titre s'affiche.
|
||||
4. **Green** : implémenter le widget.
|
||||
5. **Refactor**.
|
||||
|
||||
## Definition of Done
|
||||
- Tests contrôleur + widget verts.
|
||||
- Démo manuelle : avec une file en dur, lecture/pause/suivant/seek fonctionnent et l'UI suit.
|
||||
- `tool/check.sh` passe ; étape 2.3 cochée dans `ROADMAP.md`.
|
||||
|
||||
## Risques / notes
|
||||
- Soigner l'accessibilité tactile (taille des cibles) dès maintenant : c'est l'écran que l'enfant manipule.
|
||||
Reference in New Issue
Block a user