# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## Projet Application web de **gestion de jardins** (potager, serre, plein air), self-hosted, mobile-first, entièrement **en français**. Thème visuel : **Gruvbox Dark "seventies"** (vintage, chaleureux, contrasté). ## Architecture cible ### Backend - **Python FastAPI** + SQLModel (SQLAlchemy en dessous) - **SQLite** par défaut (volume Docker persistant), migration future vers PostgreSQL prévue - Stockage images : local `/data/uploads` + métadonnées en DB - API REST documentée (OpenAPI auto-générée par FastAPI) ### Frontend - **Vue 3 + Vite** (alternative React acceptable) - **Tailwind CSS** avec thème Gruvbox Dark personnalisé - Mobile-first, PWA en phase 2 ### Déploiement - **Docker Compose** : service `backend` + service `frontend` (static) + volumes `db` et `uploads` ## Commandes de développement Une fois le projet créé, les commandes attendues seront : ```bash # Lancer tout l'environnement docker compose up --build # Backend seul (développement) cd backend && uvicorn app.main:app --reload # Frontend seul (développement) cd frontend && npm run dev # Tests backend cd backend && pytest # Tests un seul fichier cd backend && pytest tests/test_gardens.py -v # Lint backend cd backend && ruff check . && mypy . # Lint frontend cd frontend && npm run lint ``` ## Modèle de données (tables MVP) | Table | Rôle | |---|---| | `gardens` | Jardins (nom, type, coordonnées, exposition, sol) | | `garden_cells` | Cases de la grille 2D du jardin | | `garden_images` | Photos associées à un jardin | | `measurements` | Relevés temp/humidité (air + sol) | | `plant_varieties` | Catalogue de variétés (référence) | | `plant_images` | Photos de variétés | | `plantings` | Instance : variété X dans jardin Y à case Z | | `planting_events` | Historique arrosage/taille/traitement/observation | | `tasks` | Tâches (ponctuelles ou récurrentes) | | `lunar_calendar_entries` | Cache/dataset calendrier lunaire | | `user_settings` | Préférences locales | ## Endpoints API principaux ``` 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 ``` ## Thème Gruvbox Dark Palette CSS à respecter partout : ``` Background principal : #282828 Background secondaire : #3c3836 Texte principal : #ebdbb2 Texte secondaire : #a89984 Accent vert : #b8bb26 Accent jaune : #fabd2f Accent bleu : #83a598 Accent orange : #fe8019 Erreur rouge : #fb4934 ``` Typo : `Fira Code` ou `Courier New` pour le côté rétro. ## Fonctionnalités MVP (ordre d'implémentation) 1. Modèle DB + CRUD jardins / variétés / plantations / tâches 2. Upload images + galerie 3. Vue grille jardin (2D) + placement des plantations 4. Planning calendrier (semaine/mois) + vues filtrées 5. Calendrier lunaire (phases + jours racine/feuille/fleur/fruit) 6. Dashboard + export/import JSON 7. Polissage UI mobile + README final ## Pages de l'interface 1. **Dashboard** — tâches du jour, mesures récentes, plantations actives 2. **Jardins** — liste, création, fiche jardin 3. **Grille jardin** — vue cases, détails par case 4. **Catalogue variétés** — liste, fiche variété 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. **Réglages** — unités, localisation, export/import, sauvegarde ## Qualité & conventions - Validation stricte Pydantic côté backend - Logs structurés (JSON) côté backend - Tests CRUD + filtres pour chaque ressource API - Variables d'environnement côté backend uniquement (pas de secrets dans le frontend) - Données de démo (seed) : 1 jardin + quelques variétés + plantations + tâches