3.6 KiB
3.6 KiB
AGENTS.md - DrinkDeckel Projektkontext
Diese Datei spiegelt den aktuellen Projektstand aus
CLAUDE.md. Bei Abweichungen giltCLAUDE.mdals fuehrende Datei.
Ziel
SaaS-Plattform fuer Getraenkeabrechnung in Vereinen (Multi-Tenant, Mobile + Theke, Payments).
Tech Stack (STRIKT einhalten)
- Backend: NestJS (TypeScript, strict mode)
- Datenbank: Supabase (PostgreSQL via TypeORM)
- Frontend: React + TailwindCSS
- Auth: JWT (Passport)
- Payments: Stripe (vorbereitet, spaeter SEPA)
Architektur-Regeln
- Modulare Struktur (feature-based), keine Logik in Controllern
- DTOs + class-validator fuer alle Inputs
- Services fuer Business-Logik
- Repository-Pattern fuer DB-Zugriff
clubIdueberall erzwingen (Multi-Tenant-Sicherheit)- Keine Magic Values, Enums/Konstanten verwenden
- Starkes Typing ueberall, async/await (keine Callbacks)
Sicherheits-Regeln
- Alle Inputs validieren
- Secrets niemals hardcoden oder ausgeben
- Nur Environment-Variablen fuer Zugangsdaten und Secrets verwenden
- Keine Framework-Mischung ausserhalb des definierten Stacks
Projektstruktur
/backend
/src
/core
/common
/modules
/members
/drinks
/bookings
/clubs
/billing
/auth
/frontend
/docs
Datenbank-Schema (Supabase / PostgreSQL)
-- users
id, email, password, role
-- clubs
id, name
-- memberships
user_id, club_id
-- drinks
id, club_id, name, price
-- bookings
id, user_id, club_id, drink_id, amount, created_at
-- invoices
id, club_id, user_id, total, month, created_at
API Endpoints (Uebersicht)
| Method | Endpoint | Beschreibung |
|---|---|---|
| POST | /auth/register | User registrieren |
| POST | /auth/login | JWT Token holen |
| POST | /bookings | Buchung erstellen |
| GET | /bookings | Buchungen abrufen |
| POST | /test | DB-Verbindung testen |
| GET | /test | DB-Verbindung testen |
Supabase Verbindung (TypeORM)
ENV-Variablen:
DB_HOST=your-supabase-host
DB_PORT=5432
DB_USER=your-user
DB_PASSWORD=your-password
DB_NAME=postgres
DB_SSL=true
SUPABASE_URL=
SUPABASE_KEY=
JWT_SECRET=
TypeORM-Optionen:
autoLoadEntities: truesynchronize: true(nur DEV!)- SSL aktiviert
Dependencies (Backend)
npm install @nestjs/config @nestjs/typeorm typeorm pg
npm install class-validator class-transformer
npm install @nestjs/jwt passport passport-jwt bcrypt
npm install @supabase/supabase-js
Workflow-Regeln
- Immer erklaeren, was gemacht wird, BEVOR Code geschrieben wird
- Schrittweise vorgehen, einen Task nach dem anderen
- Kleine, reviewbare Commits
- Keine unnoetigen Dateien anlegen
- Keine Overengineering, keine unbenutzten Dependencies
- Bestehende Dateien bevorzugen statt neue anlegen
- Immer nur den aktuell relevanten Kontext und die noetigen Dokus laden
Entwicklungs-Phasen
- Phase 1 - Setup: NestJS Basis, Ordnerstruktur, ENV, DB-Verbindung
- Phase 2 - Datenmodell: Entities fuer clubs, members, drinks, bookings, invoices
- Phase 3 - Core Module: Members, Drinks, Bookings (CRUD)
- Phase 4 - Multi-Tenant Security:
clubId-Enforcement ueberall - Phase 5 - Auth: JWT, Rollen (admin/member), Passwort-Hashing
- Phase 6 - Billing: Monatsabrechnung, Invoice-Generierung, Stripe-Vorbereitung
Wie Codex dieses Projekt bearbeiten soll
- Aktuellen Fortschritt aus den Phasen oben ableiten
- Bei unklarem Stand aktiv klaeren, welche Phase gerade relevant ist
- Detaildokumentation liegt in
/docs/(02-setup.mdbis07-billing.md) CLAUDE.mdals kanonische Quelle behandeln undAGENTS.mdbei Aenderungen synchron halten