docs: README, Schnellstart, Handbuch, Fahrplan und CHANGELOG

README mit Funktionsumfang, Bildergalerie, allen Umgebungsvariablen als
Tabelle und dem Betrieb inklusive Sicherung und Wiederherstellung.

Der Schnellstart führt in acht Schritten von git clone zur ersten
Anmeldung, jeder Schritt mit erwartetem Ergebnis. Er endet mit dem
Hinterlegen eines Passkeys statt beim ersten Kalenderkonto oder der
ersten Aufgabe — beides gibt es erst mit M3 und M2. Das ist in ROADMAP
und Handbuch so vermerkt, damit niemand danach sucht.

Handbuch mit Seiten zu Anmelden, Bereichen und Protokoll.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Florian Wilde
2026-09-10 14:29:51 +02:00
co-authored by Claude Opus 5
parent f91d015cc4
commit 56b5356708
9 changed files with 852 additions and 0 deletions
+49
View File
@@ -0,0 +1,49 @@
# Änderungen
Alle nennenswerten Änderungen an diesem Projekt stehen hier.
Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/),
die Versionierung [Semantic Versioning](https://semver.org/lang/de/).
## [Unveröffentlicht]
### Hinzugefügt
- Projektgerüst mit Next 16 (App Router, `output: "standalone"`), React 19,
TypeScript strict, Tailwind 4 und shadcn-Primitiven.
- `npm run pruefen` bündelt Prettier, ESLint, `tsc --noEmit`, Vitest und
ShellCheck. ShellCheck läuft über das Docker-Abbild, wenn es lokal fehlt.
- Datenmodell für Benutzer mit Rolle, OIDC-Konten, Passkeys, Bereiche und
Audit-Einträge; PostgreSQL 16 über Prisma 7 mit pg-Treiberadapter.
- Anmeldung über einen generischen OIDC-Anbieter, über Passkeys
(SimpleWebAuthn) und wahlweise über E-Mail und Passwort.
- Rollen `BENUTZER` und `ADMIN`. Jede schreibende Aktion prüft die Rolle
serverseitig in der Seite **und** noch einmal in der Server Action.
- Audit-Protokoll für jede schreibende Aktion, mit Protokollseite für die
Verwaltung. Details werden vor dem Speichern gesäubert.
- Instanzsteuerung über `INSTANZ=firma|daheim`. Was eine Instanz nicht darf,
liefert dort 404 und lädt seine Konfiguration gar nicht erst.
- Bereiche mit Farbe, Arbeitsfenster und Tageskapazität je Wochentag.
- Zeitrechnung durchgehend in Europe/Berlin, mit Tagesgrenzen, Wochenbeginn
am Montag und deutschen Anzeigeformaten.
- `/api/health` mit Status, Version, Instanz und Erreichbarkeit der Datenbank.
- Hell und Dunkel, Navigation mit Rollenfilter, Oberfläche auf Deutsch.
- Dockerfile in drei Stufen und Compose-Stapel mit eigenem Migrationsdienst.
- `backup.sh` (pg_dump im Custom-Format, `.env` und Uploads),
`update.sh` (mit Rückrollpfad), `scripts/release.sh` und `scripts/zeit.sh`.
- Tests: Unit mit Vitest, Integrationstest und Migrationstest gegen eine
echte Datenbank, E2E-Rauchtest mit Playwright.
- `npm run screenshots` nimmt die Handbuchbilder in einer Wegwerf-Instanz mit
ausschließlich erfundenen Daten auf.
- README, Schnellstart, Handbuch, ROADMAP und DEVLOG.
### Sicherheit
- Anmeldung, Passwort und Passkey antworten bei Fehlschlag immer gleich,
damit sich nicht abfragen lässt, wer ein Konto hat.
- Sitzungen als JWT, aber Rolle und Sperrstatus werden bei jeder Anfrage
frisch aus der Datenbank gelesen — eine Sperre wirkt sofort.
- Die WebAuthn-Herausforderung wird nach einem Versuch verworfen, gleich ob
er geglückt ist.
- Der Demo-Seed verweigert den Dienst ohne `DEMO_MODUS=true`.
- `allowDangerousEmailAccountLinking` ist bewusst aktiv: je Instanz gibt es
genau einen vertrauenswürdigen OIDC-Anbieter, der die Adresse selbst prüft.