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

91 lines
3.2 KiB
Markdown

# 🌿 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é)
```bash
cp .env.example .env
docker compose up --build
```
- **Application** : [http://localhost:8061](http://localhost:8061)
- **API Documentation (Swagger)** : [http://localhost:8060/docs](http://localhost:8060/docs)
### Développement Local
#### Backend
```bash
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
```bash
cd frontend
npm install
npm run dev -- --port 8061
```
#### AI Service
```bash
cd ai-service
pip install -r requirements.txt
uvicorn main:app --reload --port 8070
```
## 🛠️ Commandes de Test et Qualité
### Backend
```bash
cd backend
pytest tests/ -v
```
### Frontend
```bash
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`.