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

8.3 KiB
Raw Blame History

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