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
27 lines
785 B
JavaScript
27 lines
785 B
JavaScript
#!/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.
|
|
`)
|