Projet de groupe réalisé avec Anthony NGAKOSSO durant mon année universitaire à YNOV Campus. API REST backend pour la gestion des matériels informatiques, développée avec NestJS, TypeScript et MongoDB via Mongoose.
Cette application gère les entités suivantes :
- Employés (
employees) : CRUD des employés. - Matériaux (
materials) : CRUD des matériels et validation métier. - Catégories (
categories) : CRUD des catégories et gestion des relations matériel-catégorie.
L'application utilise une architecture modulaire NestJS et expose une documentation Swagger.
- CRUD complet pour les employés, matériels et catégories.
- Route de santé :
GET /ping. - Validation automatique des requêtes avec
ValidationPipe. - Vérification métier : un employé ne peut gérer qu'une seule catégorie.
- Documentation interactive via Swagger.
src/app.module.ts: import des modules et configuration MongoDB.src/main.ts: configuration de l'application, validation globale et Swagger.src/app.controller.ts: route racine et route/ping.src/employee: module employé.src/materials: module matériel.src/categories: module catégorie et relations.
src/
app.module.ts
main.ts
app.controller.ts
app.service.ts
employee/
employee.controller.ts
employee.service.ts
employee.dto.ts
schemas/employee.schema.ts
materials/
materials.controller.ts
materials.service.ts
materials.dto.ts
schemas/materials.schema.ts
categories/
categories.controller.ts
categories.service.ts
categories.dto.ts
schemas/category.schema.ts
schemas/materialCategory.schema.ts
Créer un fichier .env à la racine avec :
MONGO_URI=mongodb://localhost:27017/material-api
PORT=3000MONGO_URI peut être remplacé par un URI MongoDB Atlas.
npm installnpm run startMode développement :
npm run start:devMode production :
npm run start:prodGET /: message de bienvenue.GET /ping: vérifie l'état de l'API.
POST /employeesGET /employeesGET /employees/:idPUT /employees/:idDELETE /employees/:id
POST /materialsGET /materialsGET /materials/:idGET /materials/employee/:employeeNamePUT /materials/:idDELETE /materials/:id
POST /categoriesGET /categoriesGET /categories/:idPUT /categories/:idDELETE /categories/:id
POST /categories/assign- Payload :
{ "materialId": "<id>", "categoryId": "<id>" }
- Payload :
GET /categories/materials-categoriesGET /categories/materials-categories/:idRelationGET /categories/:name/materialsDELETE /categories/unassign/:idRelation
name: stringposition: stringmanagedCategory: string
name?: stringposition?: stringmanagedCategory?: string
name: stringcategory: stringemployee: string
name?: stringcategory?: stringemployee?: string
name: stringdescription: string
name?: stringdescription?: string
- Un employé gère une seule catégorie via
managedCategory. - Lors de la création ou modification d'un matériel, l'employé indiqué doit correspondre à la catégorie du matériel.
Swagger est accessible à :
http://localhost:3000/api
- Tests unitaires :
npm run test - Tests e2e :
npm run test:e2e - Couverture :
npm run test:cov
Le dépôt ne contient pas de script de déploiement spécial. Pour déployer, construisez l'application puis exécutez npm run start:prod.
- Le port par défaut est
3000. - Les routes attendent des IDs MongoDB au format
string. MONGO_URIconfigure la connexion MongoDB.