@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 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