devcodetools
8a576f6884
docs(diagrams): diagrammes C4 avec C4-PlantUML (stdlib, sans légende)
2026-09-22 10:56:16 +02:00
devcodetools
bf2c9ae4fb
feat(ui): afficher les tags dans la liste des cartes
2026-09-22 10:22:10 +02:00
devcodetools
67569e2d16
feat(tags): gestion des tags dans le formulaire carte (max 3, suggestions, normalisation)
...
- schéma zod : tags normalisés (trim + minuscules + dédupe), 3 max par carte
- couche générique : findTags (MySQL + Mongo), service tags()
- API GET /api/tags + cardsApi.tags() pour les suggestions
- formulaire : saisie + ajout (Entrée/bouton), suggestions des tags existants,
chips supprimables, compteur n/3, blocage au-delà de 3
- tests : schémas, repositories, service, route, api-client, formulaire
2026-09-22 10:18:13 +02:00
devcodetools
31283ada26
feat(pwa): hors-ligne (app shell + lecture API) et suppression depuis la page d'édition
...
- sw.ts : API GET, navigation et payloads RSC en network-first (cache en
secours hors-ligne) ; écritures non interceptées ; fallback ~offline
- edit page : bouton Supprimer avec confirmation (CardDeleteButton)
2026-09-22 10:04:47 +02:00
devcodetools
ba5bd8288d
style(docs): ligne vide ajoutée par prettier (TODO)
2026-09-22 09:46:29 +02:00
devcodetools
0ca2846f2b
fix(ssr): résoudre une base absolue pour les fetch API côté serveur (page édition)
2026-09-22 09:46:24 +02:00
devcodetools
8ff530bf99
docs: regrouper la documentation dans docs/ (hors README)
2026-09-22 09:21:18 +02:00
devcodetools
087945472a
docs: réécrire le README et ajouter le MOD_OP (lancement et exploitation)
2026-09-22 09:16:17 +02:00
devcodetools
5383f92395
style(ui): navigation du header centrée
2026-09-22 09:10:05 +02:00
devcodetools
f165168608
feat(deploy): image web Docker et docker-compose complet (P5)
...
- Dockerfile multi-étapes (node:22-alpine, pnpm, output standalone), .dockerignore
- docker-compose : service web (hôte 4000) + mysql + mongo avec volumes nommés
- Env de connexion selon DB_IMPL (MYSQL_*, MONGODB_URI) ; mongo ?authSource=admin
- Seed MySQL via 02-seed.sh (--default-character-set=utf8mb4) pour un UTF-8 propre
- fix(api): parseTags gère les colonnes JSON déjà parsées par mysql2
- TODO : phase 5 et DoD cochées
2026-09-22 09:00:07 +02:00
devcodetools
17ae195b39
docs: phases 3 et 4 terminées, traceabilité F-01 à F-10 (TODO)
2026-09-22 08:39:06 +02:00
devcodetools
5f4596578f
fix(ui): directives use client et correctifs qualité (lint, format, typecheck, tests)
2026-09-22 08:39:04 +02:00
devcodetools
9a62743e6f
test(ui): couvrir les pages Cartes, détail, édition et Jeu + page de création manquante (P4, F-05 à F-10)
2026-09-22 08:39:02 +02:00
devcodetools
61eef32c74
feat(ui): vue jeu branchée avec accueil et navigation (P3, F-01 à F-04, F-10)
2026-09-22 08:38:59 +02:00
devcodetools
0233be7fff
docs: p3-5 in progress)
2026-09-21 20:04:33 +02:00
devcodetools
208fe98f1b
feat(ui): suppression d'une carte avec confirmation (P3-6, F-07)
...
CardDeleteButton ouvre un dialog modal (aria-modal, aria-labelledby) qui
résume la carte à supprimer. Confirmation : cardsApi.remove puis retour à
la liste /cards. Annuler referme sans REMOVE. Test F-07 couvre l'ouverture,
l'annulation (remove non appelé) et la confirmation (remove + navigation).
2026-09-21 19:13:27 +02:00
devcodetools
03a6b7b455
feat(ui): page édition d'une carte pré-remplie (P3-5, F-06)
...
Page /cards/:id/edit : charge la carte via cardsApi, pré-remplit CardForm
en mode edit et enregistre via cardsApi.update. Ajoute un test F-06 au
form (pré-remplissage + update + navigation). Coche P3-5 dans TODO.
2026-09-21 19:06:38 +02:00
devcodetools
2e131dddcb
feat(ui): formulaire de création de carte avec navigation (F-05)
...
CardForm en mode création : champs question/réponse/thème, validation
HTML + affichage derreur API, soumission via cardsApi.create puis
redirection vers le détail de la carte créée (next/navigation).
2026-09-21 18:52:02 +02:00
devcodetools
3fdb558697
deps(test): @testing-library/user-event pour les intéractions de formulaire
2026-09-21 18:50:17 +02:00
devcodetools
9224fe003d
feat(ui): page détail d'une carte avec édition (F-09)
...
CardDetail affiche question, réponse révélée, thème et tags, avec liens
Modifier et retour à la liste. Page /cards/[id] qui la monte.
2026-09-21 18:45:40 +02:00
devcodetools
b030896e06
feat(ui): page liste des cartes avec lien création (F-08)
...
Route /cards montant CardList + action 'Nouvelle carte' vers /cards/new.
2026-09-21 18:44:08 +02:00
devcodetools
d82a82baf3
feat(ui): liste des cartes cliquable avec thème (F-08)
...
Composant CardList : charge les cartes via cardsApi.list(), affiche
question + thème, chaque entrée est un lien vers le détail. Gère les
états chargement, vide et erreur (ApiClientError).
2026-09-21 18:43:54 +02:00
devcodetools
405ce6e603
feat(ui): client API typé (list, CRUD, random, thèmes) avec gestion d'erreurs
2026-09-21 18:35:28 +02:00
devcodetools
de00a827ed
style(api): newline final manquant dans la factory de service
2026-09-21 18:26:26 +02:00
devcodetools
1b8aac89f9
test(api): couvrir les routes CRUD, random, thèmes et les helpers HTTP
...
Ajoute les tests des routes /api/cards, /api/cards/[id], /api/cards/random
et /api/cards/themes, ainsi que les tests des helpers http (handleError,
parseJsonBody) et de la factory getCardService. Corrige le formatage des
fichiers sources embarqués non formatés par les commits précédents.
2026-09-21 18:22:06 +02:00
devcodetools
19a5a47b28
feat(api): tirage aléatoire (global ou par thème) et liste des thèmes
2026-09-21 18:00:04 +02:00
devcodetools
ae3e87d916
feat(api): route CRUD cards (liste, détail, création, modification, suppression)
2026-09-21 17:59:48 +02:00
devcodetools
e4aa5f4b3b
test(service): CardService et schémas de validation
2026-09-21 17:59:25 +02:00
devcodetools
12670b7134
feat(service): CardService générique sur l'abstraction CardRepository
2026-09-21 17:58:59 +02:00
devcodetools
a3d9be86d8
feat(validation): schémas zod et erreurs applicatives
2026-09-21 17:58:59 +02:00
devcodetools
c997010c8c
deps: ajouter zod pour la validation des entrées
2026-09-21 17:58:24 +02:00
devcodetools
77ac6e0e21
style: formater sources et scripts (prettier)
2026-09-21 17:55:34 +02:00
devcodetools
01337ef480
test(repo): mock de Collection sans any et export CardDocument
2026-09-21 17:55:34 +02:00
devcodetools
9d743d898f
fix(docker): épingler mongo:8.2 pour compatibilité noyau 7.x
2026-09-21 17:55:33 +02:00
devcodetools
2ddb687286
test(repo): couvrir les implémentations mysql et mongo de CardRepository
2026-09-21 17:51:17 +02:00
devcodetools
4140942ae3
fix(docker): utiliser le port hôte 27018 pour mongo (hors plage 16 bits)
2026-09-21 17:51:17 +02:00
devcodetools
b02f937c96
feat(config): sélecteur de repository selon DB_IMPL
2026-09-21 17:47:33 +02:00
devcodetools
dca234f298
feat(repo): implémentation MongoDB de CardRepository
2026-09-21 17:47:23 +02:00
devcodetools
ab24d329b9
feat(repo): implémentation MySQL de CardRepository
2026-09-21 17:46:45 +02:00
devcodetools
2721326a07
feat(domain): interface générique CardRepository
2026-09-21 17:46:21 +02:00
devcodetools
68a8e1c236
feat(domain): entité Card et CardInput
2026-09-21 17:46:06 +02:00
devcodetools
94cc624364
chore(env): variables de connexion aux 2 SGBD
2026-09-21 17:46:00 +02:00
devcodetools
2b7a05cd7d
deps: ajouter les drivers mysql2 et mongodb
2026-09-21 17:45:52 +02:00
devcodetools
60494b9bf1
feat(db): collection cards MongoDB et seed
2026-09-21 17:45:42 +02:00
devcodetools
8ec38c158a
feat(db): schéma MySQL cards et seed
2026-09-21 17:45:30 +02:00
devcodetools
0e714f507b
chore(docker): conteneurs mysql et mongo dédiés avec volumes nommés
2026-09-21 17:45:12 +02:00
devcodetools
2ec13f5895
style: formater GOAL.md et TODO.md (prettier)
2026-09-21 17:42:19 +02:00
devcodetools
6981da23f1
test(app): couvrir la page PWA hors connexion
2026-09-21 17:42:19 +02:00
devcodetools
fc859de030
config(vitest): fixer le seuil de coverage à 80%
2026-09-21 17:40:35 +02:00
devcodetools
03f03f7ad2
chore: initial commit
2026-09-21 17:28:26 +02:00