style: formater GOAL.md et TODO.md (prettier)

This commit is contained in:
devcodetools committed 2026-09-21 17:42:19 +02:00
1 parent 6981da23f1
commit 2ec13f5895
2 files changed
+29 -24

No files matched your search

+1 -2
View File
@@ -4,7 +4,7 @@ Flashcards est application web SPA PWA permet d'afficher des cartes sur des suje
## Principe du jeu ## Principe du jeu
Le jeu consiste à afficher une carte au hasard. Le jeu consiste à afficher une carte au hasard.
une question ou un terme apparaît. La réponse est cachée. Si l'utilisateur souhaite consuletr la réponse, il peut faire dérouler la réponse. une question ou un terme apparaît. La réponse est cachée. Si l'utilisateur souhaite consuletr la réponse, il peut faire dérouler la réponse.
Il est néanmoins possible de sélectionner une carte au hasard sur un thème plus précis : code, langage, etc... Il est néanmoins possible de sélectionner une carte au hasard sur un thème plus précis : code, langage, etc...
@@ -34,4 +34,3 @@ Les composants d'accès aux données devront être le plus génériques possible
- Docker via docker-compose - Docker via docker-compose
- Volumes managés - Volumes managés
+28 -22
View File
@@ -25,18 +25,18 @@ Application web **SPA + PWA** : Flashcards affiche des cartes (questions/répons
> Chaque exigence doit être satisfaite avant de considérer la feature terminée. > Chaque exigence doit être satisfaite avant de considérer la feature terminée.
| Ref | Exigence | Critère d'acceptation | | Ref | Exigence | Critère d'acceptation |
|-----|----------|------------------------| | ---- | ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| F-01 | Afficher une carte au hasard | Un clic sur « Jouer » affiche UNE carte tirée aléatoirement de l'ensemble des cartes | | F-01 | Afficher une carte au hasard | Un clic sur « Jouer » affiche UNE carte tirée aléatoirement de l'ensemble des cartes |
| F-02 | Dans un tirage aléatoire, la question est visible et la réponse cachée | Le terme/question s'affiche ; la réponse ne s'affiche pas | | F-02 | Dans un tirage aléatoire, la question est visible et la réponse cachée | Le terme/question s'affiche ; la réponse ne s'affiche pas |
| F-03 | Révéler la réponse | Un clic (ou action) déroule/affiche la réponse cachée ; un second clic la masque | | F-03 | Révéler la réponse | Un clic (ou action) déroule/affiche la réponse cachée ; un second clic la masque |
| F-04 | Tirer une carte au hasard **par thème** | L'utilisateur choisit un thème ; le tirage se fait uniquement parmi les cartes de ce thème | | F-04 | Tirer une carte au hasard **par thème** | L'utilisateur choisit un thème ; le tirage se fait uniquement parmi les cartes de ce thème |
| F-05 | Créer une carte | Formulaire de création avec question, réponse et thème ; la carte est persistée | | F-05 | Créer une carte | Formulaire de création avec question, réponse et thème ; la carte est persistée |
| F-06 | Modifier une carte | Formulaire pré-rempli ; la modification est persistée | | F-06 | Modifier une carte | Formulaire pré-rempli ; la modification est persistée |
| F-07 | Supprimer une carte | Confirmation avant suppression ; la carte disparaît de la liste | | F-07 | Supprimer une carte | Confirmation avant suppression ; la carte disparaît de la liste |
| F-08 | Lister les cartes | La liste complète des cartes s'affiche (avec au minimum question + thème) | | F-08 | Lister les cartes | La liste complète des cartes s'affiche (avec au minimum question + thème) |
| F-09 | Consulter une carte spécifique | L'accès direct à une carte (via sa route/id) affiche son détail complet | | F-09 | Consulter une carte spécifique | L'accès direct à une carte (via sa route/id) affiche son détail complet |
| F-10 | Thèmes | L'utilisateur peut choisir un thème reflétant les cartes existantes | | F-10 | Thèmes | L'utilisateur peut choisir un thème reflétant les cartes existantes |
--- ---
@@ -44,15 +44,15 @@ Application web **SPA + PWA** : Flashcards affiche des cartes (questions/répons
### Entité `Card` ### Entité `Card`
| Champ | Type | Contrainte | Description | | Champ | Type | Contrainte | Description |
|-------------|------------|-------------------|------------------------------------------| | ----------- | ---------- | ----------- | ---------------------------------------------- |
| `id` | string/INT | unique (PK) | Identifiant stable de la carte | | `id` | string/INT | unique (PK) | Identifiant stable de la carte |
| `question` | string | requis | Terme ou question affiché | | `question` | string | requis | Terme ou question affiché |
| `response` | string | requis | Réponse cachée puis révélée | | `response` | string | requis | Réponse cachée puis révélée |
| `theme` | string | requis | Thème/catégorie (ex. « code », « javascript ») | | `theme` | string | requis | Thème/catégorie (ex. « code », « javascript ») |
| `tags` | string[] | optionnel | Mots-clés additionnels | | `tags` | string[] | optionnel | Mots-clés additionnels |
| `createdAt` | datetime | auto | Date de création | | `createdAt` | datetime | auto | Date de création |
| `updatedAt` | datetime | auto | Date de dernière modification | | `updatedAt` | datetime | auto | Date de dernière modification |
> La liste des thèmes peut être dérivée dynamiquement des valeurs `theme` distinctes présentes en base (simplicité) ou gérée en entité `Theme` dédiée (robustesse). Choix à figer en phase de conception. > La liste des thèmes peut être dérivée dynamiquement des valeurs `theme` distinctes présentes en base (simplicité) ou gérée en entité `Theme` dédiée (robustesse). Choix à figer en phase de conception.
@@ -118,6 +118,7 @@ Une feature est « faite » si et seulement si :
> Ordre d'exécution recommandé. Passer à la phase suivante uniquement si la DoD de la phase courante est remplie. > Ordre d'exécution recommandé. Passer à la phase suivante uniquement si la DoD de la phase courante est remplie.
### Phase 0 — Scaffolding ### Phase 0 — Scaffolding
- [ ] Initialiser le projet Next.js + TypeScript (strict) - [ ] Initialiser le projet Next.js + TypeScript (strict)
- [ ] Configurer Tailwind - [ ] Configurer Tailwind
- [ ] Configurer ESLint + Prettier - [ ] Configurer ESLint + Prettier
@@ -126,6 +127,7 @@ Une feature est « faite » si et seulement si :
- [ ] DoD : `lint`, `format`, `typecheck`, `test` s'exécutent sans erreur sur un squelette - [ ] DoD : `lint`, `format`, `typecheck`, `test` s'exécutent sans erreur sur un squelette
### Phase 1 — Données et couche d'accès générique ### Phase 1 — Données et couche d'accès générique
- [ ] Schéma MySQL (table `cards`) + migration/seed - [ ] Schéma MySQL (table `cards`) + migration/seed
- [ ] Schéma MongoDB (collection `cards`) + seed - [ ] Schéma MongoDB (collection `cards`) + seed
- [ ] Interface générique `CardRepository` (contrat complet) - [ ] Interface générique `CardRepository` (contrat complet)
@@ -136,6 +138,7 @@ Une feature est « faite » si et seulement si :
- [ ] DoD : phase 0 + les 2 repositories testés et interchangeables - [ ] DoD : phase 0 + les 2 repositories testés et interchangeables
### Phase 2 — API / services métier ### Phase 2 — API / services métier
- [ ] Service métier `CardService` reposant uniquement sur l'abstraction repository - [ ] Service métier `CardService` reposant uniquement sur l'abstraction repository
- [ ] Routes API : liste, détail, création, modification, suppression - [ ] Routes API : liste, détail, création, modification, suppression
- [ ] Routes API : tirage aléatoire simple + tirage aléatoire par thème + liste des thèmes - [ ] Routes API : tirage aléatoire simple + tirage aléatoire par thème + liste des thèmes
@@ -145,6 +148,7 @@ Une feature est « faite » si et seulement si :
- [ ] DoD : phases précédentes + contexte de MCP de l'API - [ ] DoD : phases précédentes + contexte de MCP de l'API
### Phase 3 — Interface utilisateur ### Phase 3 — Interface utilisateur
- [ ] Page/vue **liste des cartes** (F-08) - [ ] Page/vue **liste des cartes** (F-08)
- [ ] Page/vue **détail d'une carte** (F-09) - [ ] Page/vue **détail d'une carte** (F-09)
- [ ] Formulaire **création** (F-05) - [ ] Formulaire **création** (F-05)
@@ -155,12 +159,14 @@ Une feature est « faite » si et seulement si :
- [ ] DoD : phases précédentes + parcours utilisateur complet fonctionnel - [ ] DoD : phases précédentes + parcours utilisateur complet fonctionnel
### Phase 4 — Tests ### Phase 4 — Tests
- [ ] Tests des composants UI (composants critiques) - [ ] Tests des composants UI (composants critiques)
- [ ] Couverture des critères F-01 à F-10 - [ ] Couverture des critères F-01 à F-10
- [ ] Coverage au seuil défini (Phase 0) - [ ] Coverage au seuil défini (Phase 0)
- [ ] DoD : toutes phases précédentes vertes + coverage ok - [ ] DoD : toutes phases précédentes vertes + coverage ok
### Phase 5 — PWA, déploiement ### Phase 5 — PWA, déploiement
- [ ] Manifest PWA + service worker (installable, hors-ligne) — la stack SPA le permet - [ ] Manifest PWA + service worker (installable, hors-ligne) — la stack SPA le permet
- [ ] `docker-compose.yml` : `web`, `mysql`, `mongo` - [ ] `docker-compose.yml` : `web`, `mysql`, `mongo`
- [ ] Volumes nommés pour l'ensemble des données - [ ] Volumes nommés pour l'ensemble des données
@@ -176,4 +182,4 @@ Une feature est « faite » si et seulement si :
- [ ] Couverture : seuil de coverage exact - [ ] Couverture : seuil de coverage exact
- [ ] Selon cas : `Theme` en table dédiée vs dérivation des `theme` distincts - [ ] Selon cas : `Theme` en table dédiée vs dérivation des `theme` distincts
- [ ] Choix par défaut de l'implémentation repository pour la prod (MySQL ou Mongo) - [ ] Choix par défaut de l'implémentation repository pour la prod (MySQL ou Mongo)
- [ ] Authentification éventuelle (hors périmètre README, à confirmer si nécessaire) - [ ] Authentification éventuelle (hors périmètre README, à confirmer si nécessaire)