Files
jardin/consigne.md
2026-02-22 15:05:40 +01:00

215 lines
8.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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é dimport/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 :
- “Aujourdhui”
- “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 damé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 dendpoints)
- `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 denv 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