# FitCoach Pro - Lead-Verwaltung Lead-Erfassung und Verwaltung fuer FitCoach Pro, ein Online-Fitness-Coaching-Business. ## Features - Lead-Liste mit Pagination (Desktop-Tabelle + Mobile-Cards) - Lead erstellen, bearbeiten und loeschen (Soft Delete) - Formular-Validierung (Client + Server) - Responsive Design (Mobile First) - REST API mit vollstaendigem CRUD - Dark Mode Support ## Tech Stack - **Next.js 16** (App Router, TypeScript strict) - **Tailwind CSS 4** - **Supabase** (PostgreSQL) - **Zod 4** (Validierung) - **Vitest + React Testing Library** (43 Tests) - **Docker** (Multi-Stage Build) ## Setup ### Voraussetzungen - Node.js 22+ - pnpm 10+ - Docker Desktop (optional) - Supabase Account (kostenlos) ### 1. Repository klonen ```bash git clone cd fitcoachpro ``` ### 2. Dependencies installieren ```bash pnpm install ``` ### 3. Umgebungsvariablen konfigurieren ```bash cp .env.example .env ``` Trage deine Supabase-Credentials in `.env` ein: - `NEXT_PUBLIC_SUPABASE_URL` - Supabase Project URL - `NEXT_PUBLIC_SUPABASE_ANON_KEY` - Supabase Anon Key - `SUPABASE_SERVICE_ROLE_KEY` - Supabase Service Role Key (nur serverseitig!) ### 4. Datenbank einrichten Fuehre die SQL-Migration in deinem Supabase SQL Editor aus: ``` supabase/migrations/001_create_leads_table.sql ``` Optional Seed-Daten laden: ``` supabase/seed.sql ``` ### 5. Starten ```bash # Entwicklungsserver pnpm dev # Oder via Docker docker compose up --build ``` App laeuft auf [http://localhost:3000](http://localhost:3000) ## Befehle | Befehl | Beschreibung | | --- | --- | | `pnpm dev` | Entwicklungsserver starten | | `pnpm build` | Production Build | | `pnpm test` | Tests ausfuehren | | `pnpm test:watch` | Tests im Watch-Modus | | `pnpm test:coverage` | Tests mit Coverage-Report | | `pnpm lint` | ESLint ausfuehren | | `docker compose up --build` | Docker-Container starten | ## API Vollstaendige API-Dokumentation: [docs/API.md](docs/API.md) | 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 | ## Projektstruktur ```text src/ app/ api/leads/ # REST API (Route Handlers) layout.tsx # Root Layout mit Header page.tsx # Leads-Verwaltung (Startseite) components/ # UI-Komponenten lib/ supabase/ # Supabase Client types/ # TypeScript Types validations/ # Zod Schemas test/ # Test Setup supabase/ migrations/ # SQL Migrationen seed.sql # Testdaten (15 Leads) docs/ # Dokumentation ```