# 🌿 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`.