Skip to content

Latest commit

 

History

History
133 lines (92 loc) · 3.8 KB

File metadata and controls

133 lines (92 loc) · 3.8 KB

FoodExpress 🍔

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.

🚀 Fonctionnalités principales

  • 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

🛠️ Technologies utilisées

Langages & Frameworks

Node.js Express TypeScript

Bases de données & Documentation

MongoDB Swagger

Outils & Tests

Git VS Code Mocha


🛠️ Prérequis

  • Node.js >= 16
  • npm
  • Git

⚡ Installation

  1. Clonez le dépôt :
git clone https://github.com/Biohazardyee/FoodExpress.git
cd FoodExpress
  1. Installez les dépendances :
npm install
  1. 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}

🏃‍♂️ Lancement du serveur

Démarrez le serveur en mode développement :

npm run dev

Le serveur sera accessible sur : http://localhost:3000


📄 Documentation API

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.


✅ Tests

Exécutez les tests unitaires :

npm test

Générez le rapport de couverture des tests :

npm run test:coverage

🏗️ Structure du projet

FoodExpress/
│  ├─ 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

🔒 Sécurité

  • 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é