From 72c47e74a66587ad6a28b9993a31dae6cc36215a Mon Sep 17 00:00:00 2001 From: Harlekin Date: Tue, 1 Sep 2026 00:00:58 +0200 Subject: [PATCH] Projektbeschreibung und Ausschlussliste Die README beschreibt, was gebaut wird: Fall- und Personalaktenverwaltung fuer die Abteilung fuer innere Sicherheit, Anmeldung ueber Discord, gehostet als ein Dockge-Stack. Dazu die Ausschlussliste fuer Bauartefakte und alles, was Geheimnisse traegt. --- .gitignore | 24 +++++++++++++++++ README.md | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 .gitignore create mode 100644 README.md diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..982654a --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +node_modules/ +.pnpm-store/ +.next/ +out/ +dist/ +build/ + +# Von `prisma generate` erzeugt, siehe packages/db/prisma/schema.prisma +packages/db/src/generated/ +*.tsbuildinfo + +# Secrets. Vorlage ist .env.example, die echten Werte stehen im .env-Reiter von Dockge. +.env +.env.* +!.env.example + +coverage/ +test-results/ +playwright-report/ +blob-report/ +.playwright/ + +.DS_Store +*.log diff --git a/README.md b/README.md new file mode 100644 index 0000000..a6f6c7d --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +# 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 +``` + +## 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 |