2026-04-05 21:53:57 +02:00
|
|
|
|
# CLAUDE.md
|
|
|
|
|
|
|
|
|
|
|
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
|
|
|
|
|
|
|
|
|
|
## Projekt
|
|
|
|
|
|
|
2026-04-06 07:32:20 +02:00
|
|
|
|
**Gartenmanager** – Docker-basierte Web-Platform zur Verwaltung von Gartenaktivitäten. Multi-User, Multi-Tenant.
|
2026-04-05 21:53:57 +02:00
|
|
|
|
|
2026-04-05 22:32:58 +02:00
|
|
|
|
## Dokumente – wo was steht
|
2026-04-05 21:53:57 +02:00
|
|
|
|
|
|
|
|
|
|
| Dokument | Inhalt |
|
|
|
|
|
|
|---|---|
|
2026-04-05 22:32:58 +02:00
|
|
|
|
| [docs/development-standards.md](docs/development-standards.md) | **Alle Regeln:** Branching, Versionierung, Workflow, Coding, Testing |
|
|
|
|
|
|
| [docs/project-structure.md](docs/project-structure.md) | **Alle Module & Funktionen** – hier zuerst lesen, bevor Quellcode geöffnet wird |
|
2026-04-05 22:17:10 +02:00
|
|
|
|
| [CHANGELOG.md](CHANGELOG.md) | Versionshistorie |
|
|
|
|
|
|
| [VERSION](VERSION) | Aktuelle Versionsnummer |
|
2026-04-05 22:32:58 +02:00
|
|
|
|
| [.claude/session-context.md](.claude/session-context.md) | **Sessionstart hier lesen:** aktiver Branch, Version, offene Arbeit |
|
2026-04-05 21:53:57 +02:00
|
|
|
|
|
|
|
|
|
|
## Techstack
|
|
|
|
|
|
|
2026-04-06 07:32:20 +02:00
|
|
|
|
| Schicht | Technologie |
|
|
|
|
|
|
|---|---|
|
|
|
|
|
|
| Frontend | Vue 3 + Vite + PrimeVue + Pinia + Vue Router |
|
|
|
|
|
|
| Backend | FastAPI (Python 3.11) + Uvicorn |
|
|
|
|
|
|
| ORM | SQLAlchemy 2.x async + Alembic |
|
|
|
|
|
|
| Datenbank | PostgreSQL 15 (asyncpg) |
|
|
|
|
|
|
| Container | Docker Compose (3 Services: db, backend, frontend/nginx) |
|
2026-04-05 21:53:57 +02:00
|
|
|
|
|
|
|
|
|
|
## Build & Entwicklung
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-04-06 07:32:20 +02:00
|
|
|
|
# Gesamtes System starten (Produktion)
|
|
|
|
|
|
docker compose up -d
|
2026-04-05 21:53:57 +02:00
|
|
|
|
|
2026-04-06 07:32:20 +02:00
|
|
|
|
# Entwicklungsmodus (mit Hot-Reload)
|
|
|
|
|
|
docker compose -f docker-compose.dev.yml up
|
2026-04-05 21:53:57 +02:00
|
|
|
|
|
2026-04-06 07:32:20 +02:00
|
|
|
|
# Nur Backend lokal starten (setzt laufende DB voraus)
|
|
|
|
|
|
cd backend && uvicorn app.main:app --reload --port 8000
|
2026-04-05 21:53:57 +02:00
|
|
|
|
|
2026-04-06 07:32:20 +02:00
|
|
|
|
# Nur Frontend lokal starten
|
|
|
|
|
|
cd frontend && npm run dev
|
2026-04-05 21:53:57 +02:00
|
|
|
|
|
2026-04-06 07:32:20 +02:00
|
|
|
|
# Datenbankmigrationen ausführen
|
|
|
|
|
|
docker compose exec backend alembic upgrade head
|
2026-04-05 21:53:57 +02:00
|
|
|
|
|
2026-04-06 07:32:20 +02:00
|
|
|
|
# Neue Migration erstellen
|
|
|
|
|
|
docker compose exec backend alembic revision --autogenerate -m "beschreibung"
|
2026-04-05 22:17:10 +02:00
|
|
|
|
|
2026-04-06 07:32:20 +02:00
|
|
|
|
# Seed-Daten einspielen
|
|
|
|
|
|
docker compose exec backend python -m app.seeds.initial_data
|
|
|
|
|
|
|
|
|
|
|
|
# Version bumpen + commit + push
|
|
|
|
|
|
bash .claude/scripts/bump.sh patch "Beschreibung"
|
2026-04-05 22:17:10 +02:00
|
|
|
|
|
2026-04-05 22:32:58 +02:00
|
|
|
|
# Neuen Feature-Branch erstellen
|
2026-04-06 07:32:20 +02:00
|
|
|
|
bash .claude/scripts/new-feature.sh feature <name>
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Architektur
|
|
|
|
|
|
|
|
|
|
|
|
### Backend (`backend/app/`)
|
|
|
|
|
|
|
2026-04-05 22:32:58 +02:00
|
|
|
|
```
|
2026-04-06 07:32:20 +02:00
|
|
|
|
core/
|
|
|
|
|
|
config.py – pydantic-settings, liest .env (DATABASE_URL, SECRET_KEY, ...)
|
|
|
|
|
|
security.py – JWT-Erzeugung/-Prüfung (Access 30min, Refresh 7 Tage)
|
|
|
|
|
|
deps.py – FastAPI-Dependencies: get_db, get_current_user, require_role(...)
|
|
|
|
|
|
|
|
|
|
|
|
db/
|
|
|
|
|
|
base.py – SQLAlchemy DeclarativeBase
|
|
|
|
|
|
session.py – async Engine + AsyncSession Factory
|
|
|
|
|
|
|
|
|
|
|
|
models/ – SQLAlchemy ORM-Modelle (alle UUID-PKs, async-kompatibel)
|
|
|
|
|
|
schemas/ – Pydantic v2 Schemas (Create/Update/Read je Entität)
|
|
|
|
|
|
crud/ – CRUD-Funktionen (kein Business-Logik, nur DB-Zugriff)
|
|
|
|
|
|
api/v1/ – FastAPI Router je Ressource
|
|
|
|
|
|
seeds/ – Initiale Pflanzenbibliothek + Kompatibilitätsdaten
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Tenant-Kontext
|
|
|
|
|
|
Alle Nicht-Auth-Endpoints erwarten Header `X-Tenant-ID: <uuid>`. Die Dependency `get_current_tenant` prüft Mitgliedschaft des eingeloggten Users.
|
|
|
|
|
|
|
|
|
|
|
|
### Berechtigungsebenen
|
|
|
|
|
|
`READ_ONLY` → `READ_WRITE` → `TENANT_ADMIN` → `is_superadmin` (User-Flag, überspringt alle Prüfungen)
|
|
|
|
|
|
|
|
|
|
|
|
### Frontend (`frontend/src/`)
|
|
|
|
|
|
Vue 3 SFC mit PrimeVue-Komponenten, Pinia für State, Axios-Client mit JWT-Interceptor und automatischem Token-Refresh.
|
|
|
|
|
|
|
|
|
|
|
|
## Pflichtregeln (immer befolgen)
|
|
|
|
|
|
|
|
|
|
|
|
Vollständige Regeln in [docs/development-standards.md](docs/development-standards.md). Kurzfassung:
|
|
|
|
|
|
|
|
|
|
|
|
1. **Nie direkt nach `main`** – nur per Pull-Request, nur auf explizite Anweisung
|
|
|
|
|
|
2. **Jede Arbeit in eigenem Branch** unter `develop` (`feature/`, `fix/`, `debug/`)
|
|
|
|
|
|
3. **Nach jeder Änderung:** `bash .claude/scripts/bump.sh` + commit + push
|
|
|
|
|
|
4. **Vor Merge:** README, CHANGELOG, `docs/project-structure.md` prüfen
|
|
|
|
|
|
5. **Branches selbstständig wechseln** – passend zur aktuellen Aufgabe
|