# AfiS-Aktensystem Fallakten-, Personalakten- und Ermittlungsverwaltung für die Abteilung für innere Sicherheit eines SCP-RP-Servers. Anmeldung und Berechtigungen laufen vollständig über Discord. ## Los geht's 1. Ordner in ein leeres Git-Repository legen 2. Discord-Application anlegen, Bot einladen, **Server Members Intent aktivieren** 3. Claude Code im Projektordner starten Gehostet wird als **ein Dockge-Stack** auf dem Homeserver. Die fertige `compose.yaml` und die Einrichtungsschritte stehen in `docs/11-betrieb.md`. Die `.env` wird nicht im Repository gepflegt, sondern im `.env`-Reiter von Dockge; `.env.example` ist nur die Vorlage. Claude Code liest `CLAUDE.md` von selbst. Die Fachdokumente liegen in `docs/`, der Bauplan in `TASKS.md`. ## Erste Anweisung an Claude Code > Lies CLAUDE.md und alle Dateien in docs/. Fass in fünf Sätzen zusammen, was gebaut wird, > und nenn mir alles, was in den Dokumenten widersprüchlich oder unklar ist, bevor du > anfängst. Baue noch nichts. Danach Phase für Phase aus `TASKS.md`. Siehe `docs/12-arbeiten-mit-claude-code.md`. ## Aufbau ``` CLAUDE.md Projektanweisung, wird automatisch gelesen TASKS.md Bauplan in neun Phasen docs/ Fachdokumente, dazu 13-entscheidungen.md compose.yaml Der Dockge-Stack .env.example Vorlage für den .env-Reiter in Dockge web/ Next.js 15, App Router worker/ discord.js, Rollen-Abgleich pdf/ Playwright, PDF-Erzeugung packages/db/ Prisma-Schema, Migrationen, Seed docker/ Dockerfiles für web, worker und pdf ``` ## Lokal entwickeln Node 22 und pnpm 9. ```bash corepack enable && pnpm install docker run -d --name afis-db -e POSTGRES_DB=afis -e POSTGRES_USER=afis \ -e POSTGRES_PASSWORD=afis -p 5434:5432 postgres:16-alpine cp .env.example .env # DATABASE_URL und DIRECT_DATABASE_URL auf localhost:5434 zeigen lassen pnpm --filter @afis/db run build # erzeugt den Prisma-Client pnpm db:deploy && pnpm db:seed pnpm dev ``` Prüfen wie die CI: ```bash pnpm lint && pnpm typecheck && pnpm test pnpm test:e2e ``` `pnpm test` legt sich eine eigene Datenbank `afis_test` an und lässt die Entwicklungsdatenbank in Ruhe. Grund in `docs/13-entscheidungen.md`. ## Betrieb kurz gefasst | | | |---|---| | Verwaltung | Dockge, ein Stack namens `afis` unter `/opt/stacks/afis/` | | Erreichbarkeit | Cloudflare Tunnel, kein offener Port am Router | | Aktualisieren | Dockge → Stack → Update, Migration läuft automatisch mit | | Backup | zwei Dauerläufer mit Cron: nächtlicher Dump plus restic offsite |