3.6 KiB
3.6 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Projekt
Gartenmanager – Docker-basierte Web-Platform zur Verwaltung von Gartenaktivitäten. Multi-User, Multi-Tenant.
Dokumente – wo was steht
| Dokument | Inhalt |
|---|---|
| docs/development-standards.md | Alle Regeln: Branching, Versionierung, Workflow, Coding, Testing |
| docs/project-structure.md | Alle Module & Funktionen – hier zuerst lesen, bevor Quellcode geöffnet wird |
| CHANGELOG.md | Versionshistorie |
| VERSION | Aktuelle Versionsnummer |
| .claude/session-context.md | Sessionstart hier lesen: aktiver Branch, Version, offene Arbeit |
Techstack
| 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) |
Build & Entwicklung
# Gesamtes System starten (Produktion)
docker compose up -d
# Entwicklungsmodus (mit Hot-Reload)
docker compose -f docker-compose.dev.yml up
# Nur Backend lokal starten (setzt laufende DB voraus)
cd backend && uvicorn app.main:app --reload --port 8000
# Nur Frontend lokal starten
cd frontend && npm run dev
# Datenbankmigrationen ausführen
docker compose exec backend alembic upgrade head
# Neue Migration erstellen
docker compose exec backend alembic revision --autogenerate -m "beschreibung"
# Seed-Daten einspielen
docker compose exec backend python -m app.seeds.initial_data
# Version bumpen + commit + push
bash .claude/scripts/bump.sh patch "Beschreibung"
# Neuen Feature-Branch erstellen
bash .claude/scripts/new-feature.sh feature <name>
Architektur
Backend (backend/app/)
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. Kurzfassung:
- Nie direkt nach
main– nur per Pull-Request, nur auf explizite Anweisung - Jede Arbeit in eigenem Branch unter
develop(feature/,fix/,debug/) - Nach jeder Änderung:
bash .claude/scripts/bump.sh+ commit + push - Vor Merge: README, CHANGELOG,
docs/project-structure.mdprüfen - Branches selbstständig wechseln – passend zur aktuellen Aufgabe