API permettant l'authentification des utilisateurs avec JWT et la gestion de projets, de tâches et de tags.
Développée avec Node.js, Express et MongoDB.
-
Cloner le projet
git clone https://github.com/allecomte/api-task-flow.git cd api-task-flow -
Installer les dépendances
npm install
-
Créer un fichier d’environnement À la racine du projet, crée un fichier
.envcontenant les variables suivantes :PORT JWT_SECRET DB_USER DB_PASSWORD DB_NAME
-
(Optionnel) Initialiser la base de données avec des données de test
npm run seed
Lancer l’API en mode développement :
npm startLe serveur sera accessible par défaut sur :
http://localhost:3000
Le projet utilise Jest et Supertest pour les tests unitaires et d’intégration.
Exécuter tous les tests :
npm testGénérer un rapport de couverture :
npm run test-coverageLes tests s’exécutent sur une base MongoDB en mémoire grâce à mongodb-memory-server.
Une documentation est disponible via Swagger UI pour consulter et tester les routes disponibles :
http://localhost:3000/api-docs
api-task-flow/
├── docs/ # Documentation
├── scripts/
│ └── seed.js # Script d’initialisation des données
├── src/
│ ├── controllers/ # Logique métier
│ ├── middlewares/ # Middlewares d'authentification, d'accès et de validation
│ ├── models/ # Schémas Mongoose
│ ├── routes/ # Routes Express
│ ├── schemas/ # Schémas Joi
│ ├── services/ # Logique métier réutilisable
│ ├── utils/ # Fonctions génériques
│ ├── config.js # Configuration DB
│ ├── server.js # Point d’entrée de l’application
│ ├── swagger.js # Configuration Swagger UI
├── tests/ # Tests Jest / Supertest
├── .env # Fichier contenant les variables d’environnement
├── jest.config.js # Configuration Jest
├── package.json
└── README.md
- Les routes d’authentification utilisent un rate limiter via
express-rate-limit. - Les mots de passe sont hachés avec bcryptjs.
- Les tokens d’authentification sont signés avec jsonwebtoken.
| Outil / Lib | Utilité |
|---|---|
| Express | Framework backend |
| Mongoose | ORM MongoDB |
| Joi / express-validator | Validation des entrées |
| bcryptjs | Hachage des mots de passe |
| jsonwebtoken (JWT) | Authentification |
| Swagger UI | Documentation des routes |
| Jest / Supertest | Tests unitaires et E2E |
| express-rate-limit | Limitation des requêtes |