Cette application e‑commerce en microservices est un projet académique, réalisé hors du cadre de ma formation Développement Digital option Web Full Stack à l'ISTA NTIC Safi. Elle vise à démontrer la conception et le déploiement d’une plateforme cloud-native. Chaque service (authentification, produits, commandes, frontend) fonctionne de manière autonome dans des conteneurs Docker, facilitant la scalabilité et la maintenabilité.
- Fonctionnalités
- Architecture
- Stack Technique
- Prérequis
- Installation & Exécution
- Variables d’environnement
- Endpoints API
- Docker
- Auteur
- Authentification & autorisation : inscription et connexion sécurisées (JWT, bcrypt).
- Catalogue produits : opérations CRUD sur les produits.
- Gestion des commandes : création, consultation, et vérification de stock inter‑service.
- Frontend React : interface responsive (Login, Catalogue, Panier, Mes commandes, Gestion produits).
- Messaging : communication asynchrone via RabbitMQ pour les événements critiques.
- Conteneurisation : isolation des services avec Docker Compose.
app-network ──┬─ auth-service (Express, port 5001)
├─ product-service (Express, port 5002)
├─ order-service (Express, port 5003)
├─ frontend (React, port 3000)
├─ mongodb (port 27017)
└─ rabbitmq (port 5672)
Chaque service possède sa propre base de données MongoDB et communique en REST et via RabbitMQ.
| Composant | Technologie |
|---|---|
| Backend services | Node.js, Express |
| Base de données | MongoDB |
| Auth & sécurité | JWT, bcrypt |
| Front‑end | React.js, Bootstrap |
| Messaging | RabbitMQ |
| Conteneurisation | Docker, Docker Compose |
- Docker & Docker Compose
- Node.js (v18+) et npm
-
Clonez le dépôt :
git clone https://github.com/AZIZABADA10/microservices-app-e-commerce.git cd microservices-app-e-commerce -
Dupliquez les fichiers d’exemple d’environnement pour chaque service :
cp auth-service/.env.example auth-service/.env cp product-service/.env.example product-service/.env cp order-service/.env.example order-service/.env
-
Éditez chaque
.envpour configurer :MONGODB_URI,JWT_SECRET,RABBITMQ_URL, etc. -
Démarrez tous les services :
docker-compose up --build -d
-
Ouvrez votre navigateur : http://localhost:3000
| Variable | Service | Description |
|---|---|---|
| MONGODB_URI | auth,product,order | URI de connexion MongoDB |
| JWT_SECRET | auth-service | Clé secrète pour signature JWT |
| RABBITMQ_URL | auth,product,order | URL de connexion RabbitMQ |
| PORT | chaque service | Port d’écoute du service (ex. 5001) |
| Route | Méthode | Description |
|---|---|---|
/api/auth/register |
POST | Inscription utilisateur |
/api/auth/login |
POST | Connexion et obtention du JWT |
| Route | Méthode | Description |
|---|---|---|
/api/products |
GET | Récupère tous les produits |
/api/products |
POST | Crée un nouveau produit |
/api/products/:id |
PUT | Met à jour un produit existant |
/api/products/:id |
DELETE | Supprime un produit |
| Route | Méthode | Description |
|---|---|---|
/api/orders |
GET | Récupère toutes les commandes |
/api/orders |
POST | Crée une commande (vérif. stock) |
docker-compose.ymlorchestre tous les services et dépendances (MongoDB, RabbitMQ).- Les volumes garantissent la persistance des données.
- Réseau interne
app-networkpour communication sécurisée.
AZIZ ABADA Étudiant Web-Full‑Stack