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

131 lines
4.1 KiB
Markdown

# 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