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.
This commit is contained in:
+24
@@ -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
|
||||
@@ -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 |
|
||||
Reference in New Issue
Block a user