HarlekinandClaude Opus 5 ef377f0123 Runde Bedienelemente, Admin zusammengelegt, Kanäle entfallen
Vier der acht Änderungswünsche.

**Knöpfe.** Rund vierzig der siebzig Knöpfe waren blosser Text in Akzentfarbe,
von einem Link nicht zu unterscheiden. Jeder trägt jetzt Rahmen und
Grundfläche, über die Klasse .btn an einer Stelle definiert statt siebzigmal
als Klassenkette. Beim Drücken zieht der Knopf sich zusammen und bekommt einen
inneren Ring — er wirkt kurz dicker, ohne dass die Rahmenbreite sich ändert und
das Umfeld springt; die Rückmeldung setzt ohne Verzögerung ein und klingt
langsam ab, sonst bliebe ein kurzer Klick unsichtbar.

Dazu die neue Regel: Flächen bleiben eckig, alles Bedienbare ist rund. Damit
ist die Rundung eine Auskunft und keine Verzierung.

**Verwaltung.** Rollen, Vorlagen und Änderungsrichtlinie waren drei Einträge in
der Kopfzeile für etwas, das man selten und dann zusammenhängend braucht. Jetzt
ein Eintrag /admin mit Reiterleiste, dazu eine gemeinsame Tabs-Komponente, die
auch der Fallakte zeigt, welcher Reiter offen ist.

**Kanäle.** Ersatzlos entfernt, mitsamt Tabelle. Der Chat gehört dorthin, wo
der Vorgang steht; ein eigener Reiter mit freien Räumen war der Rückweg nach
Discord. Die Personalakte hat jetzt denselben Chat wie die Fallakte — ohne
„als Vermerk übernehmen", denn dafür braucht es einen Verlauf, und Meldungen
gehen nur an Erwähnte, nie in den allgemeinen Kanal: dass es zu jemandem eine
Personalakte gibt, ist selbst eine Auskunft. Ein CHECK erzwingt jetzt, dass
eine Nachricht zu genau einem Ort gehört.

**Kopfzeile.** Suchbalken statt Suchlink, als gewöhnliches Formular ohne ein
Byte im Bündel. Thema, Benachrichtigungen und Abmelden sitzen hinter dem
Profilbild, das von Discord kommt; wer keins hat, bekommt seine Initialen.

Nebenbei: Aktenzeichen in Tests waren nur auf vier Stellen eindeutig und
kollidierten zwischen Läufen, weil Akten nicht löschbar sind.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-03 15:07:43 +02:00
2026-09-01 00:01:49 +02:00
2026-09-01 00:01:29 +02:00
2026-09-01 00:01:29 +02:00
2026-09-01 00:01:29 +02:00

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.

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:

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
S
Description
Aktensystem für die AfiS aus dem SCP-RP, mit Discord-Synchro
Readme
1.4 MiB
Languages
TypeScript 91.4%
PLpgSQL 4.5%
CSS 2.3%
JavaScript 0.7%
Shell 0.6%
Other 0.5%