f9cdabfe98
- analysis_options.yaml durci (strict-casts/inference/raw-types + regles) - tool/check.sh : format + analyze + test, garde-fou PATH - mocktail en dev_dependencies - README : contrat "check.sh avant de cocher une etape" - ROADMAP : 0.2 cochee Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
83 lines
3.6 KiB
Markdown
83 lines
3.6 KiB
Markdown
# Storytime — Roadmap
|
|
|
|
> Vue d'ensemble de l'avancement. **À tenir à jour à la fin de chaque étape**
|
|
> (cocher la case + dater au format AAAA-MM-JJ). Source de vérité du « où on en est ».
|
|
>
|
|
> Légende : `[ ]` à faire · `[~]` en cours · `[x]` terminé (date)
|
|
|
|
Spec détaillée : [`docs/specs/`](docs/specs/) — un dossier par jalon, étapes en sous-fichiers.
|
|
|
|
---
|
|
|
|
## État global
|
|
|
|
| Jalon | Titre | Statut | Bloquant |
|
|
|-------|-------|--------|----------|
|
|
| 0 | Fondations | `[~]` en cours | — |
|
|
| 1 | Verrouillage / épinglage | `[ ]` à faire | ⚠️ **bloquant projet** |
|
|
| 2 | Lecture audio | `[ ]` à faire | — |
|
|
| 3 | Découverte & gestion des podcasts | `[ ]` à faire | — |
|
|
| 4 | Espace enfant | `[ ]` à faire | — |
|
|
| 5 | Code parental & espace parent | `[ ]` à faire | — |
|
|
| 6 | Limites, avertissements & fin de session | `[ ]` à faire | — |
|
|
|
|
> ⚠️ Le jalon 1 valide la faisabilité de l'exigence n°1 (interdire la sortie).
|
|
> Si l'épinglage ne tient pas (plugin + fallback natif), on reconsidère la stratégie matérielle (tablette dédiée) **avant** d'investir dans le reste.
|
|
|
|
---
|
|
|
|
## Jalon 0 — Fondations
|
|
Spec : [`docs/specs/jalon-0-fondations/`](docs/specs/jalon-0-fondations/)
|
|
|
|
- [x] 0.1 — Structure du projet Flutter & arborescence clean archi (2026-06-19)
|
|
- [x] 0.2 — Outillage qualité (lint strict, format, CI locale) (2026-06-19)
|
|
- [ ] 0.3 — Socle transverse (`Result`, erreurs, thème, router, DI Riverpod)
|
|
|
|
## Jalon 1 — Verrouillage / épinglage ⚠️
|
|
Spec : [`docs/specs/jalon-1-verrouillage/`](docs/specs/jalon-1-verrouillage/)
|
|
|
|
- [ ] 1.1 — Spike `kiosk_mode` sur appareil réel (épingler/désépingler) — **bloquant**
|
|
- [ ] 1.2 — Service de verrouillage (interface domaine + impl. + use cases)
|
|
- [ ] 1.3 — Fallback natif Kotlin via platform channel (si 1.1 insuffisant)
|
|
|
|
## Jalon 2 — Lecture audio
|
|
Spec : [`docs/specs/jalon-2-lecture-audio/`](docs/specs/jalon-2-lecture-audio/)
|
|
|
|
- [ ] 2.1 — Domaine de lecture (entités épisode/histoire, état de lecture)
|
|
- [ ] 2.2 — Service audio (`just_audio` + `audio_service`) derrière interface
|
|
- [ ] 2.3 — UI lecteur (boutons, progression) + contrôleur Riverpod
|
|
|
|
## Jalon 3 — Découverte & gestion des podcasts
|
|
Spec : [`docs/specs/jalon-3-podcasts/`](docs/specs/jalon-3-podcasts/)
|
|
|
|
- [ ] 3.1 — Recherche annuaire (API iTunes Search)
|
|
- [ ] 3.2 — Ajout par URL RSS (parsing + aperçu)
|
|
- [ ] 3.3 — Persistance des abonnements (SQLite) + use cases CRUD
|
|
|
|
## Jalon 4 — Espace enfant
|
|
Spec : [`docs/specs/jalon-4-espace-enfant/`](docs/specs/jalon-4-espace-enfant/)
|
|
|
|
- [ ] 4.1 — Liste des histoires (titres cliquables, vignettes)
|
|
- [ ] 4.2 — Navigation verrouillée (épinglage auto au démarrage, pas d'échappatoire UI)
|
|
|
|
## Jalon 5 — Code parental & espace parent
|
|
Spec : [`docs/specs/jalon-5-code-parental/`](docs/specs/jalon-5-code-parental/)
|
|
|
|
- [ ] 5.1 — Création du code au premier lancement (4 chiffres, double saisie)
|
|
- [ ] 5.2 — Stockage sécurisé (haché) + vérification du code
|
|
- [ ] 5.3 — Accès à l'espace parent (icône discrète → saisie code) + abritage de la gestion podcasts
|
|
|
|
## Jalon 6 — Limites, avertissements & fin de session
|
|
Spec : [`docs/specs/jalon-6-limites/`](docs/specs/jalon-6-limites/)
|
|
|
|
- [ ] 6.1 — Domaine des limites (minuterie + compteur d'histoires, reset quotidien)
|
|
- [ ] 6.2 — Avertissements doux en amont (« encore 5 min », « dernière histoire »)
|
|
- [ ] 6.3 — Écran de fin « C'est fini pour ce soir 🌙 » + reprise parent uniquement
|
|
|
|
---
|
|
|
|
## Journal des décisions / écarts
|
|
> Noter ici toute décision prise en cours de route ou tout écart avec la spec.
|
|
|
|
- _(vide pour l'instant)_
|