🌱 MarchéBio — Backend Place de marché numérique reliant producteurs locaux et acheteurs urbains, en réduisant les intermédiaires. Projet réalisé dans le cadre d'un projet tutoré (module de 30h) — Master 2 Génie Logiciel, ESGIS Gabon.
# 🌱 MarchéBio — Backend
Place de marché numérique reliant producteurs locaux et acheteurs urbains, en réduisant les intermédiaires.
Projet réalisé dans le cadre d'un projet tutoré (module de 30h) — Master 2 Génie Logiciel, ESGIS Gabon.
---
## 🎯 Le projet
Les producteurs de la périphérie peinent souvent à écouler leur production faute de canaux de distribution directs, tandis que les citadins cherchent des produits frais et locaux. **MarchéBio** connecte les deux directement : le producteur publie ses produits, l'acheteur parcourt, commande, et suit sa livraison.
Ce dépôt contient le **backend** de l'application, dont je suis responsable au sein de l'équipe projet.
---
## ✨ Fonctionnalités (MVP)
- 🔐 **Authentification** — inscription/connexion pour 3 profils : Producteur, Acheteur, Administrateur (JWT)
- 📦 **Gestion des produits** — CRUD complet côté producteur (nom, prix, quantité, photo)
- 🔍 **Catalogue & recherche** — parcours et recherche des produits côté acheteur
- 🛒 **Panier & commande** — panier côté client, validation en commande avec lignes de commande
- 📋 **Suivi des commandes** — statuts NOUVELLE → PRÉPARÉE → LIVRÉE
- 🛠️ **Back-office administrateur** — supervision des utilisateurs, produits et commandes
### Bonus (si le temps le permet)
- 💳 Paiement mobile simulé (Airtel Money / Moov Money)
- ⭐ Notation des producteurs par les acheteurs
- 📍 Géolocalisation des producteurs
---
## 🛠️ Stack technique
- **NestJS** — framework backend (TypeScript)
- **Prisma** — ORM
- **MySQL** — base de données
- **JWT** — authentification par tokens
- **class-validator** — validation des données
- **Swagger** — documentation de l'API
---
## 🏗️ Modélisation des données
Le modèle s'articule autour de 5 entités : `User`, `Produit`, `Commande`, `LigneCommande`, `Evaluation`.
Point clé : une commande peut contenir **plusieurs produits** grâce à l'entité `LigneCommande`, qui fige aussi le prix unitaire au moment de l'achat.
```
User (1) ----< (N) Produit …