feat(j0.3): socle transverse (Result/Failure, theme, router, DI)

- core/error : Result<S> maison (Ok/Err) + Failure scellee avec egalite de valeur
- core/theme : AppTheme Material 3 (palette coucher, cibles tactiles enfant)
- core/router : routes nommees child/parentGate/parent (Navigator 1, placeholders)
- core/di : conventions providers
- CLAUDE.md §7 : Result maison & Navigator 1 actes (YAGNI)
- ROADMAP : 0.3 cochee, Jalon 0 termine
- corrections code review : egalite Failure, assertions tests, Map.unmodifiable

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vincent Bourdon
2026-06-19 17:30:45 +02:00
parent f9cdabfe98
commit 02a121703f
10 changed files with 325 additions and 15 deletions
+2
View File
@@ -140,11 +140,13 @@ Feature-first, puis découpage en couches dans chaque feature. **Un fichier = un
|-------|-------|--------|
| Langage/UI | Flutter / Material 3 | Mono-plateforme Android, connu de l'auteur |
| État + DI | Riverpod | Testable, override facile en test |
| Gestion d'erreur | `Result<S>` maison (`Ok`/`Err`) — PAS de fpdart/dartz | YAGNI : on n'a besoin que de `map`/`fold`/`when` ; pas de dépendance externe, contrôle total |
| Audio | `just_audio` + `audio_service` | Lecture + contrôle arrière-plan |
| Épinglage | `kiosk_mode` (plugin), fallback platform channel Kotlin | API native Screen Pinning |
| Recherche podcasts | API iTunes Search (gratuite, sans clé) | Annuaire public |
| RSS | `dart_rss` (ou `webfeed`) | Parsing de flux |
| Persistance | `sqflite`/`drift` (abonnements) + `flutter_secure_storage` (code haché) | Local, sûr |
| Lecture seule réglages | `shared_preferences` | Compteurs/limites |
| Router | Navigator 1 + routes nommées — PAS de go_router | YAGNI : pas de deep-linking ni de navigation imbriquée en v1 |
Tout changement de cette table doit être justifié dans le commit et reflété ici.