8.3 KiB
8.3 KiB
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 :
- Variété (catalogue) : “Tomate Andine Cornue”, “Courgette Verte…”
- 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
- Dashboard : résumé (tâches du jour, mesures récentes, plantations actives)
- Jardins : liste + création + fiche jardin
- Grille jardin : vue cases + détails
- Catalogue variétés : liste + fiche
- Plantations : liste (filtrable) + création + fiche
- Planning : calendrier (mois/semaine) + actions
- Tâches : Kanban simple ou liste
- Calendrier lunaire : vue mois + détails jour
- 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/healthGET/POST /api/gardensGET/PUT/DELETE /api/gardens/{id}GET/POST /api/gardens/{id}/cellsGET/POST /api/varietiesGET/POST /api/plantingsGET/POST /api/tasksGET/POST /api/measurementsGET /api/lunar?month=YYYY-MMPOST /api/exportPOST /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é
- Modèle DB + CRUD jardins/variétés/plantations/tâches
- Upload images + galerie
- Vue grille jardin + placement plantations
- Planning calendrier + vues filtrées
- Calendrier lunaire (dataset ou calcul)
- Dashboard + export/import
- Polissage UI mobile + perf + README final