4.1 KiB
4.1 KiB
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+ servicefrontend(static) + volumesdbetuploads
Commandes de développement
Une fois le projet créé, les commandes attendues seront :
# 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)
- Modèle DB + CRUD jardins / variétés / plantations / tâches
- Upload images + galerie
- Vue grille jardin (2D) + placement des plantations
- Planning calendrier (semaine/mois) + vues filtrées
- Calendrier lunaire (phases + jours racine/feuille/fleur/fruit)
- Dashboard + export/import JSON
- Polissage UI mobile + README final
Pages de l'interface
- Dashboard — tâches du jour, mesures récentes, plantations actives
- Jardins — liste, création, fiche jardin
- Grille jardin — vue cases, détails par case
- Catalogue variétés — liste, fiche variété
- Plantations — liste filtrable, création, fiche
- Planning — calendrier mois/semaine + actions
- Tâches — Kanban simple ou liste
- Calendrier lunaire — vue mois + détails jour
- 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