Commit Graph
52 Commits
Author SHA1 Message Date
devcodetools 5c04defe31 docs(diagrams): nommage du diagramme de séquence (startuml) 2026-09-22 11:02:03 +02:00
devcodetools f6b4f7f79b docs(diagrams): nommage du diagramme de classes (startuml) 2026-09-22 11:00:50 +02:00
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