avant codex
This commit is contained in:
215
consigne.md
Normal file
215
consigne.md
Normal 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é 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
|
||||
Reference in New Issue
Block a user