chore: Projektgeruest mit Next.js, TypeScript und Tailwind
Grundgeruest der Anwendung: Next.js 15 (App Router), TypeScript im strict-Modus, Tailwind mit shadcn/ui-Farbtokens. Bewusste Festlegungen: - Nur Systemschriften, keine externen Fonts, kein CDN. - Grundschrift eine Stufe groesser, Fokusring immer sichtbar, Touchziele mindestens 44px. - Ampelfarben fuer Fristen als eigene Design-Tokens. - Betraege werden als Cent-Ganzzahl gefuehrt, damit die Rechnungslegung keine Rundungsfehler erbt. - .env.example dokumentiert alle Geheimnisse; npm run schluessel erzeugt sie. Etappe: 1 Phase: Fundament
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
# =============================================================================
|
||||
# Betreuungs-Cockpit - Beispielkonfiguration
|
||||
# Kopiere diese Datei nach .env und fuelle die Werte aus.
|
||||
# Alle Geheimnisse erzeugst du mit: npm run schluessel
|
||||
# =============================================================================
|
||||
|
||||
# --- Datenbank --------------------------------------------------------------
|
||||
# Lokal (Docker Compose): Host ist der Servicename "db".
|
||||
POSTGRES_USER=cockpit
|
||||
POSTGRES_PASSWORD=bitte-aendern
|
||||
POSTGRES_DB=betreuungs_cockpit
|
||||
DATABASE_URL="postgresql://cockpit:bitte-aendern@localhost:5432/betreuungs_cockpit?schema=public"
|
||||
|
||||
# --- Auth.js ----------------------------------------------------------------
|
||||
# 32 zufaellige Bytes, base64. Erzeugen: npm run schluessel
|
||||
AUTH_SECRET=
|
||||
# Oeffentliche Basis-URL der Anwendung (ohne abschliessenden Slash).
|
||||
AUTH_URL=http://localhost:3000
|
||||
# Hinter einem Reverse Proxy (Caddy) auf true setzen.
|
||||
AUTH_TRUST_HOST=true
|
||||
|
||||
# --- Anwendungsseitige Feldverschluesselung ---------------------------------
|
||||
# AES-256-GCM. 32 Bytes, base64. OHNE DIESEN SCHLUESSEL SIND DIE VERSCHLUESSELTEN
|
||||
# FELDER UNWIEDERBRINGLICH VERLOREN - unbedingt getrennt vom Backup sichern!
|
||||
# Schluesselrotation: neuen Schluessel als ENC_KEY_V2 ergaenzen und
|
||||
# ENC_KEY_AKTIV=2 setzen. Alte Schluessel bleiben zum Entschluesseln stehen.
|
||||
ENC_KEY_V1=
|
||||
ENC_KEY_AKTIV=1
|
||||
|
||||
# Separater Schluessel fuer Blind-Indizes (HMAC-SHA256).
|
||||
# Erlaubt die Suche nach z.B. einer IBAN, ohne sie im Klartext zu speichern.
|
||||
INDEX_KEY=
|
||||
|
||||
# --- Sicherheit -------------------------------------------------------------
|
||||
# Leerlauf bis zur automatischen Abmeldung (Sekunden). 30 Minuten.
|
||||
SESSION_MAX_AGE=1800
|
||||
# Wie lange eine erneute Anmeldung fuer sensible Aktionen gilt (Sekunden).
|
||||
REAUTH_MAX_AGE=300
|
||||
# Login-Sperre: max. Fehlversuche pro Zeitfenster (Sekunden).
|
||||
LOGIN_MAX_VERSUCHE=5
|
||||
LOGIN_FENSTER_SEKUNDEN=900
|
||||
LOGIN_SPERRE_SEKUNDEN=900
|
||||
|
||||
# --- Objektspeicher (S3-kompatibel, EU!) ------------------------------------
|
||||
# Wird ab Etappe 3 verwendet. Beispiel: Hetzner Object Storage, Falkenstein.
|
||||
# ACHTUNG: Mit dem Anbieter muss ein AV-Vertrag nach Art. 28 DSGVO bestehen.
|
||||
S3_ENDPOINT=https://fsn1.your-objectstorage.com
|
||||
S3_REGION=eu-central
|
||||
S3_BUCKET=betreuungs-cockpit
|
||||
S3_ACCESS_KEY_ID=
|
||||
S3_SECRET_ACCESS_KEY=
|
||||
|
||||
# --- E-Mail-Erinnerungen (optional, ab Etappe 2) ----------------------------
|
||||
SMTP_HOST=
|
||||
SMTP_PORT=587
|
||||
SMTP_USER=
|
||||
SMTP_PASSWORD=
|
||||
SMTP_FROM="Betreuungs-Cockpit <cockpit@example.de>"
|
||||
|
||||
# --- Erstanmeldung ----------------------------------------------------------
|
||||
# Wird nur vom Seed benutzt, um den ersten Betreuer-Zugang anzulegen.
|
||||
SEED_ADMIN_EMAIL=fw@wildeflorian.de
|
||||
SEED_ADMIN_PASSWORT=bitte-beim-ersten-login-aendern
|
||||
Reference in New Issue
Block a user