before gemiin
This commit is contained in:
90
GEMINI.md
Normal file
90
GEMINI.md
Normal file
@@ -0,0 +1,90 @@
|
||||
# 🌿 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`.
|
||||
Reference in New Issue
Block a user