Du champ à la table : direct, fiable, traçable.
API REST d'une place de marché agricole pour le Cameroun. Elle met en relation trois acteurs : les producteurs publient leurs récoltes, les acheteurs commandent et paient, les transporteurs livrent. Le paiement est conservé en séquestre jusqu'à la livraison, puis reversé aux producteurs.
flowchart LR
P[Producteur] -->|publie une offre| O[Catalogue]
A[Acheteur] -->|panier, commande| C[Commande]
O --> C
C -->|Mobile Money| S[Paiement en séquestre]
C -->|attribution| T[Transporteur]
T -->|livraison suivie| L[Livraison confirmée]
L --> R[Reversement aux producteurs<br/>moins la commission]
S --> R
- Quatre rôles : producteur, acheteur, transporteur, administrateur (Spatie Permission)
- Authentification par jeton (Sanctum) avec vérification du téléphone par SMS
- Catalogue : produits, catégories, offres avec gestion du stock, recherche, favoris
- Panier et commandes multi-producteurs, suivi par article
- Paiements : MTN Mobile Money, Orange Money, espèces ou virement, avec webhooks
- Séquestre : l'argent est bloqué jusqu'à la livraison, puis réparti entre les producteurs, commission de la plateforme déduite
- Logistique : regroupement des livraisons, choix du transporteur selon la zone et la capacité, calcul des distances, suivi de livraison
- Prix du marché : suggestion de prix et tendance sur 30 jours par produit et par localité
- Litiges, notes et avis, notifications (push, SMS, e-mail)
- Statistiques par rôle : producteur, acheteur, transporteur
Le code suit une séparation en couches :
| Dossier | Rôle |
|---|---|
app/Http/Controllers/Api/V1/ |
Contrôleurs par domaine (Auth, Catalog, Cart, Orders, Payments, Deliveries…) |
app/Http/Requests/ |
Validation des requêtes |
app/Services/ |
Logique métier, organisée par domaine (Payments, Logistics, Orders, Analytics…) |
app/Models/ |
25 modèles Eloquent |
app/Enums/ |
Statuts et types métier (commande, livraison, paiement, litige…) |
app/Http/Resources/ |
Mise en forme des réponses JSON |
database/migrations/ |
32 migrations |
| Couche | Technologie |
|---|---|
| Framework | Laravel 11 (PHP 8.2+) |
| Authentification | Laravel Sanctum |
| Rôles et permissions | spatie/laravel-permission |
| Images | Intervention Image |
| SMS | Africa's Talking |
| Paiement | API MTN Mobile Money, API Orange Money |
Prérequis : PHP 8.2+, Composer, MySQL ou PostgreSQL.
git clone https://github.com/BelCodeur2005/agri-connect-api.git
cd agri-connect-api
composer install
cp .env.example .env
php artisan key:generateRenseigner la base de données dans .env (et, si besoin, les clés MTN, Orange Money et Africa's Talking), puis :
php artisan migrate --seed
php artisan serveL'API répond sur http://localhost:8000/api/v1.
Le projet est en cours de développement :
- l'intégration MTN Mobile Money et Orange Money est commencée (initiation du paiement, statut, webhooks) ; l'obtention du jeton MTN, les remboursements et le reversement aux producteurs restent à finaliser et sont simulés pour l'instant
- l'optimisation des tournées de livraison utilise un algorithme simple, à améliorer
- les tests automatisés ne sont pas encore écrits