style: formater GOAL.md et TODO.md (prettier)
This commit is contained in:
1 parent
6981da23f1
commit
2ec13f5895
2 files changed
+29
-24
No files matched your search
@@ -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
|
||||||
|
|
||||||
@@ -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)
|
||||||
Reference in new issue
Block a user