avant codex

This commit is contained in:
2026-02-22 15:05:40 +01:00
parent fed449c784
commit 20af00d653
291 changed files with 51868 additions and 424 deletions

215
consigne.md Normal file
View File

@@ -0,0 +1,215 @@
# 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