Legt den kompletten Unterbau an, auf dem die Fachmodule aufsetzen. Betrieb: - docker-compose.yml mit Traefik, App, Worker, PostgreSQL 17 + PostGIS, Redis, MinIO und Gotenberg; Entwicklungs-Override ohne Traefik, dafuer mit Mailpit und Adminer - Mehrstufiges Dockerfile: eigener Benutzer, tini als PID 1, Healthcheck - .env.example mit einem Kommentar zu jeder Variable Mandantentrennung: - Row Level Security auf allen mandantenpflichtigen Tabellen - Zwei getrennte Datenbankverbindungen: florian_app mit aktiver RLS fuer die Anwendung, Eigentuemer-Zugang nur fuer Migration, Seed und Anmeldung - fuerOrganisation() als einziger Weg zu Fachdaten Nachvollziehbarkeit: - AuditLog append-only per Trigger; UPDATE ist dauerhaft gesperrt, DELETE nur im gekennzeichneten Aufbewahrungslauf - Geheimnisse werden vor dem Schreiben entfernt Anmeldung: - OIDC gegen ein extern betriebenes authentik, Rollen aus Gruppen nur als Vorbelegung beim ersten Login - Lokaler E-Mail/Passwort-Login als Rueckfallweg - Terminal per PIN und RFID mit zwei Schranken (Geraet, dann Person) Weiteres: - lib/authz.ts mit 9 Rollen und 38 Einzelrechten - lib/storage.ts (MinIO), lib/audit.ts, lib/warteschlange.ts (BullMQ) - Integrationen fuer Mail, Telegram und LLM hinter abschaltbaren Interfaces - tRPC v11, Basis-Layout mit Seitenleiste und dunkler Darstellung - Seed mit einer Beispielwehr: 16 Personen, 3 Fahrzeuge, 40 Geraete - 32 Vitest-Tests (davon 8 gegen eine echte Datenbank), 10 Playwright-Tests - README, Anleitung mit Screenshots, Roadmap, Aufwandsschaetzung, Devlog, Versionierungsregeln und Changelog Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1.3 KiB
1.3 KiB
Lies CLAUDE.md. Erstelle Phase 0 des Projekts: das Fundament.
Liefere:
- Monorepo-Struktur (Next.js App, prisma/, docker/, scripts/)
- docker-compose.yml mit: traefik, app, worker, postgres (postgis/postgis:17), redis, minio, gotenberg. Dazu docker-compose.override.yml für Entwicklung und eine vollständige .env.example mit Kommentaren zu jeder Variable.
- Dockerfile für die App (Multi-Stage, non-root User, Healthcheck).
- Prisma-Schema mit den Basismodellen: Organisation, Person, Rolle, Berechtigung, AusweisToken, AuditLog, Datei. Inklusive RLS-Policies als SQL-Migration.
- Auth: OIDC gegen authentik (Auth.js) plus lokaler E-Mail/Passwort-Fallback für den Erststart, plus Terminal-Login per PIN/RFID-Token für den Kiosk.
- lib/authz.ts mit Rollen: SUPERADMIN, KOMMANDANT, GERAETEWART, ATEMSCHUTZGERAETEWART, KASSIER, SCHRIFTFUEHRER, AUSBILDER, MITGLIED, KIOSK.
- lib/storage.ts (MinIO), lib/audit.ts, lib/db.ts (mit Mandanten-Kontext).
- Basis-Layout mit shadcn/ui, deutschem UI-Text, Dark Mode, Seitenleiste.
- Seed-Skript: eine Beispielwehr, 15 Personen, 3 Fahrzeuge, 40 Geräte.
- Vitest- und Playwright-Setup mit je einem Beispieltest.
- README mit Schnellstart in unter 10 Zeilen.
Erkläre am Ende kurz, wie ich den Stack hochfahre und mich anmelde. Frage nach, bevor du Annahmen über meine authentik-Konfiguration triffst.