Files
storytime/ROADMAP.md
T
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

3.6 KiB

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/ — un dossier par jalon, étapes en sous-fichiers.


État global

Jalon Titre Statut Bloquant
0 Fondations [ ] à faire
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/

  • 0.1 — Structure du projet Flutter & arborescence clean archi
  • 0.2 — Outillage qualité (lint strict, format, CI locale)
  • 0.3 — Socle transverse (Result, erreurs, thème, router, DI Riverpod)

Jalon 1 — Verrouillage / épinglage ⚠️

Spec : 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/

  • 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/

  • 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/

  • 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/

  • 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/

  • 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)