chore: Projektgerüst und Werkzeugkette einrichten

Next 16 mit App Router und standalone-Ausgabe, React 19, TypeScript strict,
Tailwind 4, Vitest und Playwright. Alle Versionen exakt gepinnt.

Abweichungen vom ursprünglich notierten Stand, jeweils begründet:
- Prisma 7.10.0 statt 6, weil 6 überholt ist und 8 nur als RC vorliegt.
- TypeScript 6.0.3 statt 7, weil typescript-eslint 8 nur "<6.1.0" trägt.
- ESLint 9.39.5 statt 10, weil das in eslint-config-next gebündelte
  eslint-plugin-react noch context.getFilename() benutzt.
- npm-overrides für SimpleWebAuthn und nodemailer, weil next-auth dort
  ältere optionale Peers deklariert. Die betroffenen next-auth-Provider
  werden nicht benutzt: Passkeys laufen direkt über SimpleWebAuthn 14.

"npm run pruefen" bündelt Prettier, ESLint, tsc, Vitest und ShellCheck.
ShellCheck läuft über das Docker-Abbild, wenn es lokal fehlt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Florian Wilde
2026-09-10 12:41:28 +02:00
co-authored by Claude Opus 5
parent 8220adc449
commit de1f923767
18 changed files with 13414 additions and 0 deletions
+62
View File
@@ -0,0 +1,62 @@
# ---------------------------------------------------------------------------
# Planer – Beispielkonfiguration
# Kopieren nach .env und ausfuellen. .env gehoert NIE ins Git.
# ---------------------------------------------------------------------------
# Welche Instanz laeuft hier? Steuert Provider, Integrationen und Routen.
# Erlaubt: firma | daheim
INSTANZ=daheim
# Oeffentliche Adresse der Anwendung, ohne abschliessenden Schraegstrich.
APP_URL=http://localhost:3000
# --- Datenbank -------------------------------------------------------------
# Muss zu den POSTGRES_*-Werten unten passen, wenn Docker Compose benutzt wird.
DATABASE_URL=postgresql://planer:bitte-aendern@localhost:5432/planer?schema=public
# Nur fuer docker compose: Zugangsdaten des Postgres-Containers.
POSTGRES_USER=planer
POSTGRES_PASSWORD=bitte-aendern
POSTGRES_DB=planer
# Nach aussen veroeffentlichte Ports. Aendern, wenn 5432 oder 3000 auf dem
# Rechner schon belegt sind; DATABASE_URL muss dann denselben Port nennen.
POSTGRES_PORT=5432
APP_PORT=3000
# --- Anmeldung -------------------------------------------------------------
# Signiert Sitzungen und Tokens. Erzeugen mit:
# openssl rand -base64 32
AUTH_SECRET=
# Hinter einem Reverse Proxy auf true setzen, damit Auth.js dem Host vertraut.
AUTH_TRUST_HOST=true
# Anmeldung per E-Mail und Passwort erlauben. In der Firma ueblicherweise
# false, damit nur ueber OIDC angemeldet wird.
ANMELDUNG_PASSWORT=true
# --- OIDC ------------------------------------------------------------------
# firma = Entra ID, daheim = authentik. Leer lassen schaltet OIDC ab.
# Der Rueckleit-URI beim Anbieter lautet:
# <APP_URL>/api/auth/callback/oidc
OIDC_NAME=
OIDC_ISSUER=
OIDC_CLIENT_ID=
OIDC_CLIENT_SECRET=
# --- Passkeys (WebAuthn) ---------------------------------------------------
# RP_ID ist die nackte Domain ohne Schema und Port, z. B. planer.example.de.
# Lokal ist "localhost" richtig.
WEBAUTHN_RP_ID=localhost
WEBAUTHN_RP_NAME=Planer
# Muss exakt der Herkunft im Browser entsprechen, inklusive Port.
WEBAUTHN_ORIGIN=http://localhost:3000
# --- Sonstiges -------------------------------------------------------------
# Zeitzone fuer Anzeigen und Tagesgrenzen.
TZ=Europe/Berlin
# Nur fuer die Screenshot-Instanz. Schaltet den Demo-Kalenderprovider frei
# und darf in echten Umgebungen niemals true sein.
DEMO_MODUS=false