Files
Andreas eedb049bab feat: initial FitCoach Pro lead management app
Next.js 16 app with full CRUD lead management:
- REST API (/api/leads) with GET (pagination), POST, PUT, DELETE (soft delete)
- Zod validation (server + client), Supabase (PostgreSQL)
- Responsive UI: leads table (desktop) + cards (mobile), modal form, toast notifications
- 43 tests (Vitest + React Testing Library): validation, components, pagination
- Docker setup (multi-stage build, health check)
- Supabase migration + 15 seed leads
- Documentation (CLAUDE.md, README, API docs)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-02 14:20:51 +02:00

124 lines
3.6 KiB
Markdown

@AGENTS.md
# FitCoach Pro
> Dieses Dokument ist die zentrale Referenz fuer Claude Code in diesem Projekt.
> Alle hier definierten Regeln und Konventionen sind verbindlich.
## Projekt-Uebersicht
- **Name**: FitCoach Pro
- **Beschreibung**: Lead-Erfassung und Verwaltung fuer ein Online-Fitness-Coaching-Business
- **Typ**: WEB_APP
- **Status**: IN_ENTWICKLUNG
## Tech Stack
| Komponente | Technologie | Version |
|-----------|------------|---------|
| Frontend | Next.js (App Router) | 16.x |
| UI | Tailwind CSS | 4.x |
| Sprache | TypeScript (strict) | 5.x |
| Datenbank | Supabase (PostgreSQL) | - |
| Validierung | Zod | 4.x |
| Tests | Vitest + React Testing Library | 4.x |
| Container | Docker Compose | latest |
| Package Manager | pnpm | 10.x |
### KRITISCH: Versionen
- **NIEMALS** veraltete Versionen oder deprecated APIs verwenden
- **IMMER** vor der Implementierung die aktuellste stabile Version pruefen
- Bei Unsicherheit: `pnpm info <package> version` / offizielle Docs pruefen
## Architektur
```
fitcoachpro/
├── src/
│ ├── app/ # Next.js App Router
│ │ ├── api/leads/ # REST API Endpoints
│ │ ├── layout.tsx # Root Layout
│ │ └── page.tsx # Lead-Verwaltung (Startseite)
│ ├── components/ # React Components
│ ├── lib/
│ │ ├── supabase/ # Supabase Client
│ │ ├── types/ # TypeScript Types
│ │ └── validations/ # Zod Schemas
│ └── test/ # Test Setup
├── supabase/
│ ├── migrations/ # SQL Migrationen
│ └── seed.sql # Testdaten (15 Leads)
├── docs/ # Dokumentation
├── temp/ # Lokale Notizen (GITIGNORED!)
├── Dockerfile # Multi-Stage Build
└── docker-compose.yml
```
## Kritische Regeln
### Allgemein
1. **Deutsche UI-Texte**: Echte Umlaute verwenden, kein AI-Sprech
2. **Code-Sprache**: Englisch (Variablen, Funktionen, Kommentare)
3. **Kommunikation**: Deutsch, direkt, ohne Floskeln
4. **temp/ Ordner**: NUR fuer lokale Notizen, NIEMALS committen
### Sicherheit
- **Keine Credentials** im Code oder Git
- **Secrets**: Ueber .env (gitignored)
- **.env.example**: Template ohne echte Werte committen
- **SUPABASE_SERVICE_ROLE_KEY**: Nur serverseitig, niemals NEXT_PUBLIC_
- **Input-Validierung**: Immer serverseitig mit Zod
### Tests
- **Nichts ungetestet committen**
- **Coverage-Minimum**: 80%
- **Vitest + React Testing Library**
- **cleanup()** in afterEach (React 19 + jsdom Pflicht)
## Development Commands
```bash
# Entwicklung starten
pnpm dev
# Tests
pnpm test
pnpm test:watch
pnpm test:coverage
# Lint
pnpm lint
# Build
pnpm build
# Docker
docker compose up --build
```
## Datenbank
| Tabelle | Beschreibung | Besonderheiten |
|---------|-------------|----------------|
| leads | Lead-Erfassung | Soft Delete (deleted_at), UUID PK, unique email (aktive) |
## API Endpunkte
| Method | Endpoint | Beschreibung |
|--------|----------|-------------|
| GET | /api/leads?page=1&limit=10 | Leads mit Pagination |
| POST | /api/leads | Neuen Lead erstellen |
| GET | /api/leads/[id] | Einzelnen Lead abrufen |
| PUT | /api/leads/[id] | Lead aktualisieren |
| DELETE | /api/leads/[id] | Lead soft-deleten |
Details: [docs/API.md](docs/API.md)
## Git Workflow
- **Branch-Strategie**: `main` fuer Deployments, Feature-Branches fuer Entwicklung
- **Commit-Format**: Conventional Commits (`feat:`, `fix:`, `refactor:`, `docs:`, `test:`, `chore:`)
- **Vor jedem Commit**: Tests laufen lassen
- **Merge**: Squash-Merge in main