Statut: non traité dans ce dépôt pendant cette session.
Statut: non traité dans ce dépôt pendant cette session.
Deux projets distincts ont été créés:
backend: Node.js + Expressfrontend: React (Vite)
Structure principale:
.
├── backend
│ ├── package.json
│ └── src
│ ├── app.js
│ ├── controllers
│ ├── middlewares
│ ├── models
│ ├── routes
│ ├── services
│ └── server.js
├── frontend
│ ├── package.json
│ └── src
│ ├── components
│ ├── pages
│ ├── services
│ └── styles
└── docs
Extraits package.json:
- backend: scripts
dev,start,test - frontend: scripts
dev,build,preview
Vérifications réalisées:
- démarrage backend Express sur
http://localhost:5001(port 5000 occupé localement), - démarrage frontend React sur
http://localhost:5174, - test de communication front->API via
/api/tasks, - test direct API
/api/health.
Capture (log):
Server listening on http://localhost:5001
VITE ... Local: http://localhost:5174/
curl /api/tasks -> JSON des tâches
curl /api/health -> {"message":"API is running"}
Implémentation des modèles métier:
Column:id,nameTask:id,name,color,columnId
Ajouts:
- génération d'un jeu de démonstration,
- contrôle de cohérence (chaque
task.columnIdréférence une colonne existante), - validation minimale des champs.
Fichiers principaux:
backend/src/models/columnModel.jsbackend/src/models/taskModel.jsbackend/src/services/taskService.js
Route ajoutée pour fournir une charge utile exploitable côté front:
GET /api/board->{ columns: [...], tasks: [...] }
Fichiers:
backend/src/routes/boardRoutes.jsbackend/src/controllers/boardController.js- branchement dans
backend/src/app.js
Tests unitaires/API ajoutés sur la route board:
- statut HTTP attendu,
- format attendu des données,
- gestion des erreurs.
Fichier de test:
backend/tests/boardRoutes.test.js
Capture (log):
Test Files 1 passed (1)
Tests 2 passed (2)
Interface Kanban réalisée avec composants réutilisables:
KanbanBoard(chargement asynchrone + étatloading/error),KanbanColumn,KanbanTaskCard.
Points clés:
- récupération dynamique des données via
/api/board, - affichage colonnes+tâches,
- structure HTML5/CSS3,
- adaptation desktop/tablette,
- hauteur confortable et gestion du défilement.
Fichiers:
frontend/src/components/KanbanBoard.jsxfrontend/src/components/KanbanColumn.jsxfrontend/src/components/KanbanTaskCard.jsxfrontend/src/pages/HomePage.jsxfrontend/src/services/taskService.jsfrontend/src/styles/global.css
Capture d'écran du rendu final:
Renforcement de l'API implémenté:
- middleware de validation centralisé pour
POST /api/tasksetPUT /api/tasks/:taskId, - validation des champs obligatoires, types et cohérence des valeurs,
- messages d'erreur explicites côté client,
- gestion globale centralisée des erreurs,
- protection contre la fuite d'informations sensibles (
500 -> Internal server error).
Fichiers:
backend/src/middlewares/validateTaskPayload.jsbackend/src/middlewares/errorHandler.jsbackend/src/errors/AppError.jsbackend/src/routes/taskRoutes.jsbackend/src/controllers/taskController.jsbackend/src/services/taskService.js
Tests ajoutés:
- rejet de données invalides (ex: couleur invalide),
- rejet de
columnIdinexistant, - vérification du code HTTP
400.
Fichier de test:
backend/tests/taskValidation.test.js
Capture d'exécution des tests:
Résultat de la suite backend:
Test Files 2 passed (2)
Tests 4 passed (4)