Une plateforme numérique révolutionnaire qui connecte directement les agriculteurs camerounais aux acheteurs, optimisant la chaîne de valeur agricole locale.
- 🎯 Aperçu du Projet
- 🏗️ Architecture Technique
- ✨ Fonctionnalités Clés
- 👥 Rôles Utilisateurs
- 🚀 Démarrage Rapide
- 🐳 Déploiement avec Docker
- ⚙️ Configuration des Services
- 🔧 Guide de Développement
- 📊 API Documentation
- 🧪 Tests et Qualité
- 🤝 Contribution
- 📄 Licence
TERRABIA est une solution e-commerce complète spécialisée dans les produits du terroir camerounais. La plateforme vise à :
- 🔗 Connecter directement agriculteurs et acheteurs
- 📈 Optimiser la chaîne logistique agricole
- 💰 Augmenter les revenus des producteurs locaux
- 🛡️ Instaurer un système de confiance via notation et feedback
- 🌱 Promouvoir l'agriculture locale et durable
Objectif principal : Créer un écosystème numérique complet facilitant la commercialisation des produits agricoles camerounais.
┌─────────────────────────────────────────────────────────────┐ │ Frontend (React + Vite) │ │ http://localhost:5173 │ └───────────────────────────┬─────────────────────────────────┘ │ ┌───────────────────────────▼─────────────────────────────────┐ │ API Gateway (Spring Boot) │ │ terra-proxy-service:8080 │ └─────┬────────────┬────────────┬────────────┬───────────────┘ │ │ │ │ ▼ ▼ ▼ ▼ ┌──────────┐┌──────────┐┌──────────┐┌──────────┐┌──────────┐ │ Auth ││ Users ││ Products ││ Orders ││ Notif │ │ Service ││ Service ││ Service ││ Service ││ Service │ │ 8082 ││ 8001 ││ 8002 ││ 8003 ││ 8004 │ └──────────┘└──────────┘└──────────┘└──────────┘└──────────┘ │ │ │ │ │ └────────────┴────────────┴────────────┴────────────┘ │ ┌───────────────────────────▼─────────────────────────────────┐ │ Service Registry (Eureka) │ │ terra-registry-service:8761 │ └─────────────────────────────────────────────────────────────┘
text
| Composant | Technologie | Port | Description |
|---|---|---|---|
| Frontend | React + Vite + Tailwind CSS | 5173 | Interface utilisateur responsive |
| terra-proxy-service | Spring Boot | 8082 | Routage et agrégation des APIs |
| terra-auth-service | Django + JWT | 8083 | Gestion des tokens et RBAC |
| terra-user-service | Django | 8085 | Gestion des profils utilisateurs |
| terra-product-service | Django | 8084 | Catalogue et stocks produits |
| terra-order-transaction-service | Django | 8086 | Commandes et transactions |
| terra-notification-service | Node.js + RabbitMQ | 4002 | Notifications multi-canaux |
| **terra-registry-service ** | Spring Cloud Eureka | 8761 | Découverte des services |
| terra-conf-service | Spring Cloud Config | 8080 | Gestion centralisée de configuration |
| Message Broker | RabbitMQ | 5672 | Communication asynchrone |
| Database | PostgreSQL | 5432 | Base de données principale |
- 📸 Publication avec médias (images/vidéos)
- 📊 Mise à jour dynamique des stocks
- 🏷️ Catégorisation avancée des produits
- 🔍 Recherche et filtres multicritères
- 🛍️ Panier persistant et sécurisé
- 💰 Paiement Mobile Money (MTN/Orange)
- 🚚 Calcul automatique des frais de livraison
- 📍 Attribution intelligente des livreurs
- 🔄 Suivi en temps réel des commandes
- 👨🌾 Profils personnalisés (Agriculteur/Acheteur/Livreur/Admin)
- ⭐ Système de notation et réputation
- 🔐 Authentification sécurisée JWT + OAuth2
- 📱 Multi-device support
- 📈 Dashboard administrateur complet
- 👁️ Surveillance en temps réel des activités
- ⚙️ Gestion des utilisateurs et permissions
- 📊 Analytics et rapports détaillés
| Rôle | Permissions | Accès |
|---|---|---|
| Agriculteur/Vendeur | Publier produits, gérer stocks, voir commandes | Catalogue, Dashboard vendeur |
| Acheteur/Client | Rechercher, commander, payer, notifier | Marketplace, Panier, Historique |
| Livreur | Voir missions, mettre à jour statuts, géolocalisation | Application mobile de livraison |
| Administrateur | Tout gérer, modérer, générer rapports | Dashboard admin complet |
- Docker 20.10+ et Docker Compose
- Python 3.9+ (pour les services Django)
- Node.js 18+ (pour frontend et service notifications)
- Java 11+ (pour services Spring)
- Git
- kubectl et Minikube (déploiement Kubernetes)
- PostgreSQL 14+ (développement local)
- RabbitMQ 3.11+ Installation en 5 minutes bash
git clone https://github.com/TP-Master1-GL/TERRABIA.git cd TERRABIA
docker-compose up -d
docker-compose ps
Frontend: http://localhost:5173
API Gateway: http://localhost:8082
Eureka Dashboard: http://localhost:8761
RabbitMQ Management: http://localhost:15672 (guest/guest)
Installation Manuelle bash
cd terra-registry-service mvn spring-boot:run
cd terra-auth-service python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt python manage.py runserver 8083
cd frontend npm install npm run dev 🐳 Déploiement avec Docker
Script de démarrage automatique bash #!/bin/bash
echo "🚀 Démarrage de TERRABIA..."
docker-compose up -d postgres rabbitmq sleep 10
docker-compose up -d terra-registry-service sleep 15
docker-compose up -d terra-conf-service sleep 10
docker-compose up -d terra-auth-service terra-users-service terra-products-service terra-orders-transaction-service terra-notification-service
docker-compose up -d terra-proxy-service
cd frontend npm run build docker build -t terrabia-frontend . docker run -d -p 5173:80 terrabia-frontend
echo "✅ TERRABIA est opérationnel!" echo "🌐 Frontend: http://localhost:5173" echo "🔗 API Gateway: http://localhost:8080" echo "📊 Eureka Dashboard: http://localhost:8761" ⚙️ Configuration des Services Variables d'Environnement bash
DB_HOST=postgres DB_PORT=5432 DB_NAME=terrabia DB_USER=terrabia_user DB_PASSWORD=secure_password
RABBITMQ_HOST=rabbitmq RABBITMQ_PORT=5672 RABBITMQ_USER=guest RABBITMQ_PASSWORD=guest
JWT_SECRET_KEY=votre_clé_secrète_très_longue_et_complexe JWT_ACCESS_TOKEN_EXPIRE_MINUTES=15 JWT_REFRESH_TOKEN_EXPIRE_DAYS=7
EUREKA_SERVER_URL=http://eureka:8761/eureka CONFIG_SERVER_URL=http://config-service:8888
PAYMENT_GATEWAY_URL=https://api.mobile-money.cm SMS_PROVIDER_URL=https://api.sms-provider.cm Configuration Spring Cloud properties
spring.application.name=terrabia-config server.port=8888 spring.profiles.active=native
auth.jwt.secret=${JWT_SECRET_KEY} auth.jwt.expiration=900000
product.media.storage=s3 product.media.max-size=10485760 🔧 Guide de Développement Structure du Projet text TERRABIA/ ├── frontend/ # Application React │ ├── src/ # Composants et pages │ ├── public/ # Assets statiques │ └── package.json # Dépendances frontend ├── terra-auth-service/ # Service d'authentification │ ├── auth_app/ # Application Django │ ├── requirements.txt # Dépendances Python │ └── Dockerfile # Configuration Docker ├── terra-users-service/ # Gestion utilisateurs ├── terra-product-service/ # Catalogue produits ├── terra-order-transaction-service/ # Commandes ├── terra-notification-service/ # Notifications (Node.js) ├── terra-proxy-service/ # API Gateway (Spring) ├── terra-registry-service/ # Eureka Server (Spring) ├── terra-cloud-conf/ # Configuration centrale ├── terra-conf-service/ # Config Server (Spring) ├── k8s/ # Manifests Kubernetes ├── docker-compose.yml # Orchestration locale └── start-all.sh # Script de démarrage Développement d'un Service Python bash
cd terra-auth-service python -m venv venv source venv/bin/activate # Linux/Mac
pip install -r requirements.txt
python manage.py makemigrations python manage.py migrate
python manage.py createsuperuser
python manage.py runserver 8082
python manage.py test pytest Développement Frontend bash cd frontend
npm install
npm run dev
npm run build
npm test npm run test:e2e Communication Inter-Services
📊 API Documentation Points d'Accès Principaux Toutes les APIs sont accessibles via l'API Gateway: http://localhost:8080/api/
Service Endpoints Description Auth POST /auth/login POST /auth/register POST /auth/refresh POST /auth/logout Gestion authentification JWT Users GET /users/{id} PUT /users/{id} GET /users/{id}/profile Gestion profils utilisateurs Products GET /products POST /products GET /products/{id} PUT /products/{id} Catalogue produits Orders POST /orders GET /orders/{id} PUT /orders/{id}/status POST /orders/{id}/pay Commandes et paiements Notifications GET /notifications POST /notifications/subscribe Système de notifications
Documentation Swagger Chaque service expose sa documentation Swagger/OpenAPI:
Auth Service: http://localhost:8083/swagger/
Product Service: http://localhost:8084/swagger/
Order Service: http://localhost:8086/swagger/
Sécurité 🔐 Authentification: JWT avec expiration courte (15 minutes)
🛡️ RBAC: 4 rôles avec permissions granulaires
🤝 Contribution Processus de Contribution Fork le projet sur GitHub
Clone votre fork localement
Créez une branche pour votre fonctionnalité
Développez avec les standards du projet
Testez vos changements
Soumettez une Pull Request
📄 Licence Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
Droits ✅ Utilisation commerciale autorisée
✅ Modification autorisée
✅ Distribution autorisée
✅ Utilisation privée autorisée
❌ Responsabilité limitée
❌ Garantie limitée
📞 Support et Contact Équipe de Développement NGUEMBU YEPMO JOHN - Architecte Technique ,Chef de Projet et Développeur fullstack
MAFFO NGALEU LAETITIA - Développeuse backend
TSABENG DELPHAN - Développeur Backend
MAAMOC KENGUIM RONEL - Développeur Backend
Ressources 📖 Documentation Technique
🐛 Signaler un Bug
💡 Suggestions d'Amélioration
📧 Contact: terrabia237@gmail.com
Statut du Projet Version: 1.0.0 (MVP)
État: 🟢 Actif - En développement
Dernière mise à jour: Décembre 2025
Prochaine version: V1.1 - Système de recommandation
🎯 Roadmap Phase 1 - MVP (Décembre 2025) ✅ Architecture microservices
✅ Authentification et gestion utilisateurs
✅ Catalogue produits de base
✅ Système de commandes
✅ Paiements Mobile Money
✅ Notifications par email
Phase 2 - Q1 2026 🔄 Application mobile livreurs
🔄 Système de recommandation IA
🔄 Analytics avancés
🔄 Support multi-langues
Phase 3 - Q2 2026 📅 Contract farming digital
📅 Marketplace B2B
📅 API publique pour partenaires
📅 Certification produits
TERRABIA - Transformer l'agriculture camerounaise par le numérique 🌱