Files
jardin/GEMINI.md
2026-02-22 22:18:32 +01:00

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 :

  1. 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).
  2. Frontend (Vue 3) : Interface utilisateur réactive avec Vite, Pinia pour le store, et Tailwind CSS pour le style.
  3. AI Service (FastAPI + YOLO) : Service spécialisé dans la détection et classification de plantes via un modèle YOLOv8 (ultralytics).
  4. 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

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 SQLModel pour 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 /api pour 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.