# CONSIGNE — Claude Code — Webapp “Gestion Jardin” (Self-hosted, mobile-friendly) ## 0) Objectif Développer une webapp self-hosted (Docker) **en français**, **compatible smartphone**, permettant de gérer un ou plusieurs jardins (extérieur/serre) et la gestion complète des plants : fiche plante, planning (plantation, entretien, culture, récolte), tâches, calendrier (dont lunaire), et données environnementales (températures, humidité). UI : **Gruvbox Dark “seventies”** (vintage, contrasté, très lisible). ## 1) Contraintes générales - Déploiement : **Docker Compose** (service backend + frontend + DB). - Stockage : **SQLite par défaut** (volume persistant). Prévoir migration future vers Postgres. - Accès : application locale (LAN) via reverse proxy possible mais non obligatoire. - Auth : MVP sans auth complexe (optionnel). Prévoir un futur module “auth”. - Données : possibilité d’import/export (JSON) et sauvegarde DB. - Responsive : **mobile-first** + desktop ok. - Performance : chargements rapides, pagination/lazy-loading images. ## 2) Périmètre fonctionnel MVP (Phase 1) ### 2.1 Gestion des jardins Un jardin est une “zone cultivée” décrite par : - Nom, description, type : **plein air / serre / tunnel** - Coordonnées : latitude/longitude, altitude (optionnel) - Adresse/lieu (optionnel) - Exposition : nord/sud/est/ouest + ombre/mi-ombre/plein soleil - Sol : type (argileux, sableux, limoneux, humifère…), pH (optionnel), amendements (optionnel) - **Images** (galerie) - Capteurs (valeurs manuelles MVP) : - température sol - température air - humidité air - humidité sol (optionnel) - date/heure de mesure, source (manuel/capteur) - Géométrie du jardin en “cases” (grille) : voir 2.3 Fonctions : - CRUD jardins - Fiche jardin - Galerie photos - Saisie rapide “mesure du jour” (temp/humidité) ### 2.2 Gestion des plants (plantes/cultures) Deux concepts : 1) **Variété** (catalogue) : “Tomate Andine Cornue”, “Courgette Verte…” 2) **Plantation** (instance) : variété X plantée dans jardin Y à une date et une case/grille. Champs “Variété” (catalogue) : - Nom commun, variété, famille (Solanacées…), tags - Périodes conseillées : semis intérieur, semis extérieur, repiquage, plantation, récolte (fenêtres) - Besoins : eau (faible/moyen/fort), soleil, espacement, température min, durée de culture - Profondeur semis, type de sol conseillé - Notes personnelles, photos Champs “Plantation” (instance) : - Jardin, zone/case, date semis/plantation/repiquage - Quantité (nb plants), statut (prévu/en cours/terminé/échoué) - Historique des actions (arrosage, taille, traitement, etc.) - Dates réelles (récolte début/fin), rendement estimé/réel (optionnel MVP) - Observations et photos Fonctions : - CRUD variété - CRUD plantation (avec placement sur grille) - Vue “planning” (par semaine/mois) des actions à venir ### 2.3 Géométrie du jardin (cases / grille) MVP : représentation en **grille 2D** configurable (ex: 6×4). - Chaque case peut avoir : - un libellé (A1, A2…) - des dimensions (optionnel) - un état (libre/occupée) - des plantations associées (actives + historiques) - Interaction : - tap/clic sur case → détails + actions (ajouter plantation, marquer libre, notes) ### 2.4 Gestion des tâches et planning - Tâches : - titre, description, jardin, plantation liée (optionnel), priorité, échéance, récurrence simple - statut : à faire / en cours / fait / annulé - Vues : - “Aujourd’hui” - “Semaine” - “Backlog” - Notifications : hors-scope MVP (préparer hooks) ### 2.5 Calendrier lunaire (MVP simple) MVP : afficher pour chaque jour : - phase (nouvelle lune, 1er quartier, pleine lune, dernier quartier) - indicateur “lune montante/descendante” si source disponible - filtres “jours racines/feuilles/fleurs/fruits” : optionnel Implémentation : - Soit calcul astronomique via lib (si fiable), - soit dataset embarqué (année en cours + suivante) importable. ## 3) Brainstorming d’améliorations (Phase 2+) ### 3.1 “Smart features” - Détection photo (mobile) : - reconnaissance variété / espèce (suggestion, pas décision) - détection maladies / carences (suggestion) - suivi de croissance (comparaison de photos) - Suggestions automatiques : - alertes gel / canicule selon localisation + météo - arrosage estimé selon température/humidité/historique - rotation des cultures et associations bénéfiques - Import/export : - import semences / catalogue depuis CSV - export journal des récoltes ### 3.2 Capteurs réels (futur) - Intégration Home Assistant / MQTT (module) - Courbes de température/humidité - Tableau de bord “serre” temps réel ### 3.3 Multi-jardin / multi-site - Gestion de plusieurs lieux (ex: maison / potager secondaire) - Synchronisation & sauvegardes ## 4) UX / UI (obligatoire) ### 4.1 Thème visuel - Style : **Gruvbox Dark** + “seventies” (vintage, chaleureux, lisible) - Contraintes : - contrastes élevés, gros boutons mobile - cartes (cards) avec bord arrondi, ombres légères - typographie simple, lisibilité prioritaire - Composants récurrents : - Header fixe avec navigation (Jardins / Plants / Planning / Tâches / Calendrier lunaire / Settings) - Drawer mobile (menu burger) - Panneau filtre/tri sur listes ### 4.2 Pages MVP 1) Dashboard : résumé (tâches du jour, mesures récentes, plantations actives) 2) Jardins : liste + création + fiche jardin 3) Grille jardin : vue cases + détails 4) Catalogue variétés : liste + fiche 5) Plantations : liste (filtrable) + création + fiche 6) Planning : calendrier (mois/semaine) + actions 7) Tâches : Kanban simple ou liste 8) Calendrier lunaire : vue mois + détails jour 9) Settings : unités, localisation par défaut, export/import, sauvegarde ### 4.3 Filtres “judicieux” (brainstorming) - Jardins : type, exposition, serre/extérieur, tags, dernier relevé capteur - Variétés : famille, saison, besoin eau, soleil, durée culture, tags - Plantations : jardin, case, statut, période (en cours/à venir/terminé), “à récolter” - Tâches : priorité, échéance, jardin, plantation liée, statut, récurrence ## 5) Architecture technique (choix par défaut) ### Backend - Python **FastAPI** - ORM : SQLModel (ou SQLAlchemy) - SQLite par défaut - Gestion uploads images : stockage local `/data/uploads` + métadonnées DB - API REST : - CRUD jardins, cases, variétés, plantations, tâches, mesures - endpoints de recherche + filtres - export/import JSON ### Frontend - Vue 3 + Vite (ou React si préféré) - UI kit minimal (ou Tailwind) en respectant le thème Gruvbox - Mobile-first, PWA optionnelle (phase 2) ### Docker - `docker-compose.yml` : - backend - frontend (static) - volume DB + uploads ## 6) Modèle de données (MVP — tables) - gardens - garden_cells - garden_images - measurements (air_temp, soil_temp, humidity_air, humidity_soil, ts, garden_id) - plant_varieties - plant_images - plantings - planting_events (arrosage, taille, traitement, observation) - tasks - lunar_calendar_entries (dataset) OU table “computed cache” - user_settings (local) ## 7) API (MVP — exemples d’endpoints) - `GET /api/health` - `GET/POST /api/gardens` - `GET/PUT/DELETE /api/gardens/{id}` - `GET/POST /api/gardens/{id}/cells` - `GET/POST /api/varieties` - `GET/POST /api/plantings` - `GET/POST /api/tasks` - `GET/POST /api/measurements` - `GET /api/lunar?month=YYYY-MM` - `POST /api/export` - `POST /api/import` ## 8) Règles qualité - Validation stricte des champs (pydantic) - Gestion erreurs claire côté UI - Tests basiques backend (CRUD + filtres) - Logs structurés backend - Pas de secrets dans le frontend (variables d’env côté backend) ## 9) Livrables attendus - Arborescence complète projet - `README.md` (install, run, backup) - `docker-compose.yml` - Backend FastAPI prêt - Frontend complet pages MVP - Thème gruvbox dark seventies appliqué partout - Données de démo (seed) : 1 jardin + quelques variétés + plantations + tâches ## 10) Ordre de réalisation imposé 1) Modèle DB + CRUD jardins/variétés/plantations/tâches 2) Upload images + galerie 3) Vue grille jardin + placement plantations 4) Planning calendrier + vues filtrées 5) Calendrier lunaire (dataset ou calcul) 6) Dashboard + export/import 7) Polissage UI mobile + perf + README final