Files
Orderlix/AGENTS.md
2026-03-29 14:54:21 +02:00

3.6 KiB

AGENTS.md - DrinkDeckel Projektkontext

Diese Datei spiegelt den aktuellen Projektstand aus CLAUDE.md. Bei Abweichungen gilt CLAUDE.md als 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
  • clubId ueberall 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: true
  • synchronize: 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

  1. Phase 1 - Setup: NestJS Basis, Ordnerstruktur, ENV, DB-Verbindung
  2. Phase 2 - Datenmodell: Entities fuer clubs, members, drinks, bookings, invoices
  3. Phase 3 - Core Module: Members, Drinks, Bookings (CRUD)
  4. Phase 4 - Multi-Tenant Security: clubId-Enforcement ueberall
  5. Phase 5 - Auth: JWT, Rollen (admin/member), Passwort-Hashing
  6. 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.md bis 07-billing.md)
  • CLAUDE.md als kanonische Quelle behandeln und AGENTS.md bei Aenderungen synchron halten