KO
|
EN
gitlite — search
Search
#javascript
#python
#hacktoberfest
#react
#ai
#typescript
#llm
#go
#golang
#android
#machine-learning
#rust
#deep-learning
#linux
PI-S3
★ 9
Open GitHub ↗
No description available.
Download README (.md)
Explore Similar Repositories
temptree
:
Fast, disposable Git worktrees for AI agents and throwaway experiments.
DAPI
:
The 63rd Annual Meeting of the Association for Computational Linguistics (ACL2025)
librarySync
:
Sync between Letterboxd, Trakt, Simkl and more
lazurite
:
A powerful BlueSky & BlackSky app for iOS & Android
aiostreams
:
AIOStreams: The ultimate Stremio addon hub. Consolidate streams from Torrentio, Debrid services & Usenet into one clean list. Features advanced filtering (HDR/DV, languages), smart deduplication, catalog management & 10+ built-in scrapers. Customize your experience with a powerful proxy & rule engine. Docker-ready & self-hostable.
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
PI-S3
?
Download (.md)
<p align="center"> <h1 align="center">🌾 BetterAgri Mauritanie 🇲🇷</h1> <p align="center"> <strong>Plateforme Agricole Intelligente — Connecter les agriculteurs aux marchés</strong> </p> <p align="center"> <a href="#-démarrage-rapide">Démarrage</a> • <a href="#-fonctionnalités">Fonctionnalités</a> • <a href="#-architecture">Architecture</a> • <a href="#-technologies">Technologies</a> • <a href="#-installation">Installation</a> • <a href="#-api">API</a> • <a href="#-ia--diagnostic">IA</a> • <a href="#-contribuer">Contribuer</a> </p> <p align="center"> <img src="https://img.shields.io/badge/Next.js-14-black?logo=next.js" alt="Next.js 14"> <img src="https://img.shields.io/badge/Django-4.2-092E20?logo=django" alt="Django 4.2"> <img src="https://img.shields.io/badge/FastAPI-0.100+-009688?logo=fastapi" alt="FastAPI"> <img src="https://img.shields.io/badge/TensorFlow-2.x-FF6F00?logo=tensorflow" alt="TensorFlow"> <img src="https://img.shields.io/badge/PostgreSQL-15-4169E1?logo=postgresql" alt="PostgreSQL"> <img src="https://img.shields.io/badge/Docker-Compose-2496ED?logo=docker" alt="Docker"> <img src="https://img.shields.io/badge/License-MIT-green" alt="MIT License"> </p> </p> --- ## 📌 Table des Matières - [Présentation](#-présentation) - [Problématique & Vision](#-problématique--vision) - [Fonctionnalités](#-fonctionnalités) - [Architecture](#-architecture) - [Technologies](#-technologies) - [Démarrage Rapide](#-démarrage-rapide) - [Installation Détaillée](#-installation) - [Variables d'Environnement](#-variables-denvironnement) - [Endpoints API](#-api) - [IA & Diagnostic Cultures](#-ia--diagnostic) - [Docker & Déploiement](#-docker--déploiement) - [Structure du Projet](#-structure-du-projet) - [Contribuer](#-contribuer) - [Licence](#-licence) - [Contact](#-contact) --- ## 🎯 Présentation **BetterAgri** est une plateforme numérique complète conçue pour moderniser et digitaliser le secteur agricole en **Mauritanie** 🇲🇷. Elle offre un écosystème complet qui connecte **agriculteurs**, **acheteurs** et **administrateurs** autour de quatre piliers : | Pilier | Description | |--------|------------| | 🛒 **Marketplace** | Commerce agricole direct entre producteurs et consommateurs | | 🤖 **Intelligence Artificielle** | Diagnostic automatique des maladies des cultures par analyse d'image | | 🌦 **Météo Prédictive** | Alertes et recommandations météorologiques pour l'agriculture | | 📊 **Analytics** | Tableaux de bord et statistiques pour le suivi des performances | > 🎓 **Projet Intégré — Semestre 3 (PI-S3)** — Réalisé dans un cadre académique pour démontrer la maîtrise d'une architecture full-stack moderne avec intelligence artificielle. --- ## 🌍 Problématique & Vision ### Le constat | Problème | Impact | |----------|--------| | Vente directe difficile pour les agriculteurs | Revenus réduits par les intermédiaires | | Manque d'accès à l'information météo fiable | Pertes de récoltes évitables | | Faible digitalisation du secteur agricole | Inefficacité des chaînes d'approvisionnement | | Pas de diagnostic accessible des maladies | Traitements tardifs et inadaptés | ### La vision BetterAgri > **Donner aux agriculteurs mauritaniens les outils numériques et intelligents pour produire mieux, vendre directement et sécuriser leurs revenus — tout en connectant les consommateurs à des produits locaux, frais et traçables.** --- ## ✨ Fonctionnalités ### 👨🌾 Pour les Agriculteurs - 📸 **Diagnostic IA** — Analyse de la santé des cultures par photo (tomate, pomme de terre, poivron) - 💊 **Recommandations de traitement** — Actions, produits et durée de traitement suggérés par l'IA - 💧 **Recommandations d'irrigation** — Conseils basés sur les données météo et l'humidité du sol - 📊 **Tableau de bord analytique** — Suivi des ventes, commandes, revenus, clients et performances - 🛒 **Gestion des produits** — Publication, modification, gestion des stocks et images - 🌦 **Alertes météo personnalisées** — Notifications pluie, tempête, gel, sécheresse, canicule - ⭐ **Système d'évaluation** — Notes détaillées (communication, qualité, livraison) - 💬 **Messagerie directe** — Communication en temps réel avec les acheteurs - 💰 **Gestion des reversements** — Suivi des paiements reçus (Mobile Money, virement bancaire) ### 🛍 Pour les Acheteurs - 🛒 **Marketplace complète** — Produits agricoles par catégorie, région et agriculteur - 🔍 **Recherche avancée** — Filtres par qualité (Premium/Standard/Économique), bio, localisation - 🧾 **Panier & commandes** — Système complet de gestion de panier et checkout - 📦 **Suivi des commandes** — Statut en temps réel (en attente → confirmé → expédié → livré) - 💳 **Paiement multi-modes** — Mobile Money, carte de crédit, virement, paiement à la livraison - ❤️ **Liste de souhaits** — Sauvegarde de produits favoris - ⭐ **Avis et évaluations** — Notation des produits et des agriculteurs - 🔔 **Notifications** — Email, push, in-app et SMS ### 🛡 Pour les Administrateurs - 👥 **Gestion des utilisateurs** — Vérification d'identité, validation des agriculteurs - 📦 **Supervision** — Contrôle des produits, commandes et paiements - 📈 **Statistiques globales** — Vue d'ensemble de l'activité de la plateforme - 🧹 **Modération** — Gestion des avis, contenus et comptes --- ## 🏗 Architecture Le projet suit une **architecture microservices** composée de 4 services principaux : ``` ┌─────────────────────────────────────────────────────────────────┐ │ CLIENT (Port 3000) │ │ Next.js 14 + TypeScript + TailwindCSS │ │ shadcn/ui • Zustand • React Query • Recharts │ └───────────────────┬────────────────────────┬────────────────────┘ │ /api/* │ /api/v1/predict ▼ ▼ ┌──────────────────────────────┐ ┌──────────────────────────────┐ │ BACKEND (Port 8000) │ │ AI SERVICE (Port 8001) │ │ Django 4.2 + DRF + JWT │ │ FastAPI + TensorFlow │ │ │ │ MobileNetV2 (15 classes) │ │ 9 Apps : │ │ │ │ • accounts (auth + profils) │ │ Cultures supportées : │ │ • marketplace (produits) │ │ 🍅 Tomate (10 maladies) │ │ • orders (commandes/panier) │ │ 🥔 Pomme de terre (3) │ │ • payments (paiements) │ │ 🌶 Poivron (2) │ │ • messaging (chat) │ └──────────────────────────────┘ │ • notifications (alertes) │ │ • reviews (avis) │ │ • analytics (statistiques) │ │ • weather (météo) │ └──────────────┬───────────────┘ │ ▼ ┌──────────────────────────────┐ │ PostgreSQL 15 (Port 5432) │ │ Base de données │ └──────────────────────────────┘ ``` --- ## 🛠 Technologies ### Frontend | Technologie | Version | Rôle | |-------------|---------|------| | [Next.js](https://nextjs.org/) | 14.x | Framework React avec App Router & SSR | | [TypeScript](https://www.typescriptlang.org/) | 5.x | Typage statique | | [TailwindCSS](https://tailwindcss.com/) | 3.4 | Framework CSS utilitaire | | [shadcn/ui](https://ui.shadcn.com/) | latest | Composants UI accessibles (Radix UI) | | [Zustand](https://zustand-demo.pmnd.rs/) | 5.x | Gestion d'état globale | | [React Query](https://tanstack.com/query) | 5.x | Gestion du cache et des requêtes API | | [Recharts](https://recharts.org/) | 3.x | Graphiques et visualisations | | [Framer Motion](https://www.framer.com/motion/) | 12.x | Animations | | [Zod](https://zod.dev/) | 4.x | Validation de schémas | | [React Hook Form](https://react-hook-form.com/) | 7.x | Gestion des formulaires | | [Axios](https://axios-http.com/) | 1.x | Client HTTP | ### Backend | Technologie | Version | Rôle | |-------------|---------|------| | [Django](https://www.djangoproject.com/) | 4.2 | Framework web Python | | [Django REST Framework](https://www.django-rest-framework.org/) | 3.14 | API RESTful | | [SimpleJWT](https://django-rest-framework-simplejwt.readthedocs.io/) | 5.3 | Authentification JWT | | [Django Channels](https://channels.readthedocs.io/) | 4.0 | WebSockets (messagerie temps réel) | | [Celery](https://docs.celeryq.dev/) | 5.3 | Tâches asynchrones | | [Redis](https://redis.io/) | 4.5 | Cache & message broker | | [PostgreSQL](https://www.postgresql.org/) | 15 | Base de données relationnelle | | [Stripe](https://stripe.com/) | 5.5 | Intégration paiements | | [Gunicorn](https://gunicorn.org/) | 21.2 | Serveur WSGI de production | | [WhiteNoise](https://whitenoise.readthedocs.io/) | 6.5 | Service de fichiers statiques | | [Pillow](https://pillow.readthedocs.io/) | 10.0 | Traitement d'images | ### Service IA | Technologie | Version | Rôle | |-------------|---------|------| | [FastAPI](https://fastapi.tiangolo.com/) | latest | API haute performance | | [TensorFlow](https://www.tensorflow.org/) | 2.x | Framework deep learning | | [MobileNetV2](https://arxiv.org/abs/1801.04381) | — | Modèle de base (transfer learning) | | [OpenCV](https://opencv.org/) | latest | Traitement d'images | | [scikit-learn](https://scikit-learn.org/) | latest | Utilitaires ML | ### Infrastructure | Technologie | Rôle | |-------------|------| | [Docker](https://www.docker.com/) | Conteneurisation | | [Docker Compose](https://docs.docker.com/compose/) | Orchestration multi-conteneurs | --- ## 🚀 Démarrage Rapide ### Prérequis - **Docker** & **Docker Compose** (recommandé) - Ou bien : **Node.js 20+**, **Python 3.10+**, **PostgreSQL 15+** ### Lancement avec Docker (1 commande) ```bash git clone https://github.com/SidiMed/PI-S3.git cd PI-S3 docker-compose up --build ``` L'application sera accessible sur : | Service | URL | |---------|-----| | Frontend | [http://localhost:3000](http://localhost:3000) | | Backend API | [http://localhost:8000/api/](http://localhost:8000/api/) | | Admin Django | [http://localhost:8000/admin/](http://localhost:8000/admin/) | | Service IA | [http://localhost:8001](http://localhost:8001) | | Health Check IA | [http://localhost:8001/health](http://localhost:8001/health) | --- ## 📦 Installation ### Installation manuelle (développement) #### 1. Backend Django ```bash # Créer et activer l'environnement virtuel cd server/core python -m venv venv source venv/bin/activate # Linux/Mac # venv\Scripts\activate # Windows # Installer les dépendances pip install -r requirements.txt # Configurer la base de données python manage.py migrate # Créer un super-utilisateur python manage.py createsuperuser # Lancer le serveur de développement python manage.py runserver ``` #### 2. Service IA (FastAPI) ```bash # Dans un nouveau terminal cd server/ai_service python -m venv venv source venv/bin/activate # Installer les dépendances pip install -r requirements.txt # Lancer le service uvicorn app.main:app --reload --port 8001 ``` #### 3. Frontend Next.js ```bash # Dans un nouveau terminal cd client # Installer les dépendances npm install # Lancer le serveur de développement npm run dev ``` #### 4. Entraînement du modèle IA (optionnel) ```bash cd server/ai_service/training # Placer le dataset dans le dossier dataset/ # Structure attendue : dataset/<nom_classe>/<images> python train.py # Le modèle sera sauvegardé dans ../app/models/model_v1.h5 ``` --- ## 🔐 Variables d'Environnement Créer un fichier `.env` dans `server/core/` : ```env # Django SECRET_KEY=votre-clé-secrète-django DEBUG=True ALLOWED_HOSTS=localhost,127.0.0.1 # Base de données DATABASE_URL=postgres://postgres:postgres@localhost:5432/betteragri DB_NAME=betteragri DB_USER=postgres DB_PASSWORD=postgres DB_HOST=localhost DB_PORT=5432 # Redis REDIS_URL=redis://localhost:6379/0 # Email EMAIL_BACKEND=django.core.mail.backends.smtp.EmailBackend EMAIL_HOST=smtp.gmail.com EMAIL_PORT=587 EMAIL_USE_TLS=True EMAIL_HOST_USER=votre-email@gmail.com EMAIL_HOST_PASSWORD=votre-mot-de-passe-app # Stripe (Paiements) STRIPE_SECRET_KEY=sk_test_xxx STRIPE_PUBLISHABLE_KEY=pk_test_xxx # API Météo WEATHER_API_KEY=votre-clé-api-openweathermap ``` --- ## 📡 API ### Endpoints principaux Le backend expose une API RESTful complète avec authentification JWT : | Module | Préfixe | Description | |--------|---------|-------------| | **Auth** | `/api/auth/` | Inscription, connexion, JWT, profil, vérification email, reset mot de passe | | **Marketplace** | `/api/marketplace/` | CRUD produits, catégories, recherche, filtres, liste de souhaits | | **Orders** | `/api/orders/` | Gestion commandes, panier, suivi statut | | **Payments** | `/api/payments/` | Initiation paiement, webhooks, reversements agriculteurs | | **Messaging** | `/api/messaging/` | Conversations, messages, statut de lecture | | **Notifications** | `/api/notifications/` | Notifications multi-canal (email, push, in-app, SMS) | | **Weather** | `/api/weather/` | Données météo, alertes, préférences agriculteurs | | **Reviews** | `/api/reviews/` | Avis produits et évaluations agriculteurs | | **Analytics** | `/api/analytics/` | Statistiques de vente, clients, produits | ### API IA (FastAPI) | Méthode | Endpoint | Description | |---------|----------|-------------| | `GET` | `/health` | Vérification de l'état du service | | `POST` | `/api/v1/predict` | Diagnostic d'une image de culture | **Exemple d'appel au diagnostic IA :** ```bash curl -X POST http://localhost:8001/api/v1/predict \ -F "file=@photo_feuille.jpg" ``` **Exemple de réponse :** ```json { "label": "Tomato Early Blight", "confidence": 94.57, "recommendation": "Early blight detected. Remove infected leaves immediately. Apply fungicide containing chlorothalonil or copper.", "actions": [ "Supprimer les feuilles infectées", "Appliquer un fongicide adapté", "Éviter l'arrosage par aspersion" ], "treatment_duration": "7–14 jours", "products": "Fongicide" } ``` --- ## 🤖 IA & Diagnostic ### Modèle Le service IA utilise **MobileNetV2** (transfer learning depuis ImageNet) pour classifier les maladies des plantes à partir de photos de feuilles. | Paramètre | Valeur | |-----------|--------| | Architecture de base | MobileNetV2 | | Taille d'image | 224 × 224 px | | Nombre de classes | 15 | | Optimiseur | Adam | | Époques | 15 | | Batch size | 32 | | Data augmentation | rotation, zoom, flip horizontal | ### Maladies détectées | Culture | Maladies | |---------|----------| | 🍅 **Tomate** | Healthy, Early Blight, Late Blight, Septoria Leaf Spot, Bacterial Spot, Leaf Mold, Target Spot, Spider Mites, Yellow Leaf Curl Virus, Mosaic Virus | | 🥔 **Pomme de terre** | Healthy, Early Blight, Late Blight | | 🌶 **Poivron** | Healthy, Bacterial Spot | Pour chaque diagnostic, le système fournit : - ✅ **Recommandation** détaillée - 📋 **Actions** à entreprendre (en français) - ⏱ **Durée de traitement** estimée - 💊 **Produits** recommandés --- ## 🐳 Docker & Déploiement ### Services Docker Compose ```yaml services: postgres: # Base de données PostgreSQL 15 ports: 5432 backend: # API Django + Gunicorn ports: 8000 depends_on: postgres ai_service: # Service IA FastAPI + TensorFlow ports: 8001 frontend: # App Next.js ports: 3000 ``` ### Commandes utiles ```bash # Lancer tous les services docker-compose up -d # Voir les logs docker-compose logs -f backend # Reconstruire un service après modification docker-compose up --build backend # Exécuter les migrations Django docker-compose exec backend python manage.py migrate # Créer un admin docker-compose exec backend python manage.py createsuperuser # Arrêter tous les services docker-compose down # Supprimer les données (volumes) docker-compose down -v ``` --- ## 📂 Structure du Projet ``` PI-S3/ ├── client/ # 🖥 Frontend Next.js 14 │ ├── src/ │ │ ├── app/ # App Router (pages) │ │ │ ├── auth/ # Pages d'authentification │ │ │ │ ├── login/ # Connexion │ │ │ │ ├── register/ # Inscription │ │ │ │ ├── forgot-password/ # Mot de passe oublié │ │ │ │ ├── change-password/ # Changement mot de passe │ │ │ │ └── logout/ # Déconnexion │ │ │ ├── dashboard/ # Tableaux de bord │ │ │ │ ├── admin/ # Dashboard admin │ │ │ │ ├── buyer/ # Dashboard acheteur │ │ │ │ └── farmer/ # Dashboard agriculteur │ │ │ │ └── products/ # Gestion produits (CRUD) │ │ │ ├── marketplace/ # Marketplace publique │ │ │ ├── verify-email/ # Vérification email │ │ │ ├── layout.tsx # Layout principal │ │ │ ├── page.tsx # Page d'accueil (landing) │ │ │ └── globals.css # Styles globaux │ │ ├── components/ │ │ │ ├── landing/ # Composants landing page │ │ │ │ ├── hero-section.tsx │ │ │ │ ├── features-section.tsx │ │ │ │ ├── problems-section.tsx │ │ │ │ ├── solutions-section.tsx │ │ │ │ ├── how-it-works-section.tsx │ │ │ │ ├── for-who-section.tsx │ │ │ │ ├── impact-section.tsx │ │ │ │ └── trust-section.tsx │ │ │ ├── layout/ # Header & Footer │ │ │ └── ui/ # Composants UI (shadcn/ui) │ │ ├── services/ # Services API (Axios) │ │ │ ├── auth.ts # Authentification │ │ │ ├── marketplace.ts # Produits & catégories │ │ │ ├── orders.ts # Commandes │ │ │ ├── cart.ts # Panier │ │ │ ├── payment.ts # Paiements │ │ │ ├── messaging.ts # Messagerie │ │ │ ├── reviews.ts # Avis │ │ │ ├── analytics.ts # Statistiques │ │ │ ├── weather.ts # Météo │ │ │ ├── ai-diagnosis.ts # Diagnostic IA │ │ │ └── wishlist.ts # Liste de souhaits │ │ ├── stores/ # État global (Zustand) │ │ │ └── auth.store.ts # Auth store │ │ ├── hooks/ # Hooks personnalisés │ │ ├── lib/ # Utilitaires │ │ └── providers.tsx # Providers React │ ├── Dockerfile │ ├── package.json │ ├── tailwind.config.ts │ ├── tsconfig.json │ └── next.config.js # Proxy API vers backend │ ├── server/ │ ├── core/ # 🐍 Backend Django │ │ ├── betteragri/ # Configuration Django │ │ │ ├── settings/ │ │ │ │ ├── base.py # Settings de base │ │ │ │ ├── development.py # Settings développement │ │ │ │ └── production.py # Settings production │ │ │ ├── urls.py # Routes principales │ │ │ ├── wsgi.py # Point d'entrée WSGI │ │ │ └── asgi.py # Point d'entrée ASGI │ │ ├── apps/ # Applications Django │ │ │ ├── accounts/ # 👤 Utilisateurs & auth │ │ │ ├── marketplace/ # 🛒 Produits & catégories │ │ │ ├── orders/ # 📦 Commandes & panier │ │ │ ├── payments/ # 💳 Paiements & transactions │ │ │ ├── messaging/ # 💬 Messagerie temps réel │ │ │ ├── notifications/ # 🔔 Notifications multi-canal │ │ │ ├── reviews/ # ⭐ Avis & évaluations │ │ │ ├── analytics/ # 📊 Statistiques │ │ │ └── weather/ # 🌦 Météo & alertes │ │ ├── templates/ # Templates HTML │ │ ├── static/ # Fichiers statiques │ │ ├── manage.py │ │ ├── requirements.txt │ │ └── Dockerfile │ │ │ ├── ai_service/ # 🤖 Service IA (FastAPI) │ │ ├── app/ │ │ │ ├── main.py # Application FastAPI │ │ │ ├── api/v1/ # Routes API v1 │ │ │ ├── models/ # Modèle TF sauvegardé │ │ │ ├── services/ │ │ │ │ ├── inference.py # Prédiction │ │ │ │ └── recommendations.py # Recommandations par maladie │ │ │ └── utils/ # Traitement images │ │ ├── training/ │ │ │ ├── train.py # Script d'entraînement │ │ │ ├── evaluate.py # Évaluation du modèle │ │ │ └── dataset/ # Dataset (non versionné) │ │ ├── requirements.txt │ │ └── Dockerfile │ │ │ └── mediafiles/ # Fichiers uploadés │ ├── mobile/ # 📱 App mobile (à venir) ├── docker-compose.yml # Orchestration des services ├── .gitignore ├── LICENSE # MIT License └── README.md ``` --- ## 🗃 Modèles de Données ### Modèle Utilisateur Le système supporte 3 types d'utilisateurs avec des champs spécifiques : | Champ | Description | |-------|-------------| | `user_type` | `farmer` / `buyer` / `admin` | | `wilaya` | 16 wilayas de Mauritanie | | `city` | 18 villes principales | | `phone_number` | Validation format mauritanien (+222XXXXXXXX) | | `crop_types` | Types de cultures (dattes, riz, blé, mil, sorgho...) | | `irrigation_system` | Goutte-à-goutte, aspersion, gravitaire, manuelle | | `rating` | Note moyenne calculée | | `language` | Français / Arabe | | `currency` | MRU (Ouguiya mauritanien) | ### Vérification des comptes Système complet de KYC incluant : - Upload de carte d'identité (recto/verso) - Documents d'enregistrement de ferme - Titre de propriété foncière - Workflow de validation par admin ### Système de paiement Méthodes supportées : - 📱 **Mobile Money** — moyen de paiement dominant en Mauritanie - 💳 **Carte de crédit** - 🏦 **Virement bancaire** - 💵 **Paiement à la livraison** --- ## 🤝 Contribuer Les contributions sont les bienvenues ! Voici comment participer : 1. **Fork** le repository 2. **Créez** votre branche (`git checkout -b feature/ma-fonctionnalite`) 3. **Committez** vos changements (`git commit -m 'feat: Ajout de ma fonctionnalité'`) 4. **Poussez** vers la branche (`git push origin feature/ma-fonctionnalite`) 5. **Ouvrez** une Pull Request ### Conventions de commit Ce projet suit la convention [Conventional Commits](https://www.conventionalcommits.org/) : | Préfixe | Usage | |---------|-------| | `feat:` | Nouvelle fonctionnalité | | `fix:` | Correction de bug | | `docs:` | Documentation | | `style:` | Formatage, style (pas de changement logique) | | `refactor:` | Refactoring | | `test:` | Ajout ou modification de tests | | `chore:` | Maintenance, dépendances | --- ## 📄 Licence Ce projet est distribué sous la licence **MIT**. Voir le fichier [LICENSE](./LICENSE) pour plus d'informations. ``` MIT License — Copyright (c) 2026 SidiMed ``` --- ## 📬 Contact - **Auteur** : SidiMed - **Projet** : PI-S3 — BetterAgri Mauritanie - **GitHub** : [github.com/SidiMed/PI-S3](https://github.com/SidiMed/PI-S3) --- <p align="center"> Fait avec ❤️ pour l'agriculture mauritanienne 🇲🇷 </p>