3.2 KiB
3.2 KiB
🌿 Jardin — Application de gestion de jardins
Interface web mobile-first pour gérer jardins, cultures, tâches et calendrier lunaire, avec détection d'espèces via IA. Thème visuel : Gruvbox Dark Seventies.
🏗️ Architecture du Projet
Le projet est composé de trois services principaux orchestrés par Docker Compose :
- Backend (FastAPI) : API REST gérant la logique métier, la base de données (SQLite/SQLModel) et l'intégration des services (lunaire, météo).
- Frontend (Vue 3) : Interface utilisateur réactive avec Vite, Pinia pour le store, et Tailwind CSS pour le style.
- AI Service (FastAPI + YOLO) : Service spécialisé dans la détection et classification de plantes via un modèle YOLOv8 (
ultralytics). - Redis : Utilisé pour le cache et les tâches planifiées.
🚀 Démarrage Rapide
Avec Docker (Recommandé)
cp .env.example .env
docker compose up --build
- Application : http://localhost:8061
- API Documentation (Swagger) : http://localhost:8060/docs
Développement Local
Backend
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# Variables d'env par défaut pour le dev local
export DATABASE_URL=sqlite:///./data/jardin.db
export UPLOAD_DIR=./data/uploads
uvicorn app.main:app --reload --port 8060
Frontend
cd frontend
npm install
npm run dev -- --port 8061
AI Service
cd ai-service
pip install -r requirements.txt
uvicorn main:app --reload --port 8070
🛠️ Commandes de Test et Qualité
Backend
cd backend
pytest tests/ -v
Frontend
cd frontend
npm run lint # Vérification TypeScript (vue-tsc)
📋 Conventions de Développement
- Langue : Code en anglais (variables, fonctions, routes), commentaires et documentation en français.
- Style Backend : PEP 8. Utilisation de
SQLModelpour les modèles de données (union de SQLAlchemy et Pydantic). - Style Frontend : Composition API (Vue 3). Utilisation de TypeScript obligatoire. Tailwind CSS pour le styling atomique.
- API : Préfixe
/apipour tous les endpoints. Documentation automatique via Swagger. - Base de données : SQLite par défaut pour la simplicité et la portabilité (située dans
data/jardin.db). - Media : Les images uploadées sont stockées dans
data/uploads/et servies via/uploads.
📂 Structure des Données (Modèles SQLModel)
Garden: Jardins (nom, dimensions, exposition, géolocalisation).Plant: Bibliothèque de plantes (nom, famille, exigences).Variety: Variétés spécifiques de plantes.Planting: Instances de plantation dans un jardin (date, état, position).Task: Tâches à accomplir (arrosage, taille, etc.).Settings: Paramètres utilisateur (lat/long pour météo/lune).Meteo: Données météo locales et prévisions.Lunar: Calculs de phases et conseils lunaires.
🤖 Service IA
Le service de détection utilise le modèle foduucom/plant-leaf-detection-and-classification via YOLOv8.
Endpoint : POST /detect acceptant une image.
Il est intégré au backend via le router identify.