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:
Florian Wilde
2026-08-22 01:31:17 +02:00
commit cc72f5efd7
15 changed files with 638 additions and 0 deletions
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env node
/**
* Erzeugt die Geheimnisse fuer die .env-Datei.
*
* Aufruf: npm run schluessel
*
* Die Werte werden bewusst nur ausgegeben und nirgends gespeichert.
* Kopiere sie in die .env und sichere ENC_KEY_V1 zusaetzlich getrennt
* vom Datenbank-Backup (z.B. Passwortmanager, Papier im Ordner).
*/
import { randomBytes } from 'node:crypto'
const b64 = (bytes) => randomBytes(bytes).toString('base64')
console.log(`
# --- Erzeugt am ${new Date().toISOString()} ---
AUTH_SECRET=${b64(32)}
ENC_KEY_V1=${b64(32)}
ENC_KEY_AKTIV=1
INDEX_KEY=${b64(32)}
POSTGRES_PASSWORD=${b64(24).replace(/[+/=]/g, 'x')}
# WICHTIG: ENC_KEY_V1 geht NICHT verloren gehen duerfen.
# Ohne ihn sind Diagnosen, IBANs, Versicherungsnummern und Notizen
# aus dem Backup nicht mehr lesbar.
`)