FoodExpress est une API RESTful développée en Node.js et Express.js pour gérer les utilisateurs, restaurants et menus d'une plateforme de commande de repas en ligne.
Cette API est conçue pour être modulaire, sécurisée et facilement extensible.
- Gestion des utilisateurs : CRUD complet, rôles
user/admin, authentification via JWT - Gestion des restaurants : CRUD réservé aux admins, lecture publique avec tri et pagination
- Gestion des menus : CRUD réservé aux admins, lecture publique avec tri et pagination
- Validation des entrées pour assurer la cohérence des données
- Documentation Swagger pour faciliter l'intégration (OpenAPI)
- Tests unitaires essentiels avec Mocha
- Node.js >= 16
- npm
- Git
- Clonez le dépôt :
git clone https://github.com/Biohazardyee/FoodExpress.git
cd FoodExpress- Installez les dépendances :
npm install- Configurez les variables d'environnement :
Créez un fichier
.envà la racine du projet et ajoutez :
MONGO_DB={URL_DE_VOTRE_BASE_DE_DONNÉES_MONGODB}
JWT_SECRET={VOTRE_CLEF_SECRÈTE_JWT}Démarrez le serveur en mode développement :
npm run devLe serveur sera accessible sur : http://localhost:3000
La documentation Swagger est disponible à : http://localhost:3000/api-docs
Cette documentation permet de tester toutes les routes et de comprendre les paramètres attendus.
Exécutez les tests unitaires :
npm testGénérez le rapport de couverture des tests :
npm run test:coverageFoodExpress/
│ ├─ bin/ # binaire du projet
│ ├─ config/ # Configuration de la DB
│ ├─ controllers/ # Logique métier des routes
│ ├─ schema/ # Schémas Mongoose
│ ├─ routes/ # Définition des routes API
│ ├─ middlewares/ # Middlewares (auth, validation)
│ ├─ types/ # Ajoute propriété user au type request
│ ├─ services/ # Permet de transmettre à la DB
│ ├─ utils/ # Fonctions utilitaires
│ ├─ tests/ # Tests Unitaires
| ├─ package.json # Dépendances et scripts du projet
| ├─ package-lock.json
| ├─ .gitignore # Fichiers et dossiers à ignorer par Git
| ├─ .env # Variables d'environnement
│ └─ app.ts # Point d'entrée de l'application
├─ .gitignore # Fichiers et dossiers à ignorer par Git
└─ README.md # Documentation du projet
- JWT pour l'authentification et la gestion des rôles
- Validation des entrées pour éviter les injections et erreurs
- Structure modulable pour un futur renforcement de sécurité