feat: scaffold klarbild foundation (astro+postgres+s3, auth, migrations, health)

- Astro 5 SSR (node standalone) + React, OKLCH tokens (no tailwind)
- migrations/001_init.sql: full schema per 03-datenmodell-api
- lib: db+migrations, crypto (AES-256-GCM), auth (argon2+signed session, ratelimit),
  storage (S3/MinIO, presigned URLs), openrouter (POST /v1/images, cost)
- middleware: init-once + session guard + admin gate; /api/health (db+storage)
- login + studio placeholder; seeds (till/lea, default recipes); Dockerfile
- verified: astro build passes
This commit is contained in:
2026-07-23 11:11:08 +00:00
commit b46dbbe889
26 changed files with 9651 additions and 0 deletions
+33
View File
@@ -0,0 +1,33 @@
# ---- Klarbild — Umgebungsvariablen (ohne echte Werte committen!) ----
# Datenbank (Postgres)
DATABASE_URL=postgres://klarbild:CHANGEME@klarbild-db:5432/klarbild
# Objektspeicher (S3-kompatibel, z. B. MinIO)
S3_ENDPOINT=http://klarbild-minio:9000
S3_REGION=us-east-1
S3_BUCKET=klarbild
S3_ACCESS_KEY=
S3_SECRET_KEY=
S3_FORCE_PATH_STYLE=true
# Sitzungen & Verschlüsselung
SESSION_SECRET= # zufällig, lang; signiert Session-Cookies
ENCRYPTION_KEY= # 32 Byte hex (64 Zeichen); verschlüsselt Keys/Passwörter in der DB
# OpenRouter (Rückfallebene; DB-Wert aus dem Admin hat Vorrang)
OPENROUTER_API_KEY=
# Telegram (Rückfallebene; DB-Wert hat Vorrang). Webhook wird nach Deploy registriert.
TELEGRAM_BOT_TOKEN=
# Optional
N8N_WEBHOOK_URL=
PUBLIC_BASE_URL=https://klarbild.heidrich-digital.de
# Erststart-Passwörter (nur beim ersten Seed genutzt, danach im Admin änderbar)
SEED_TILL_PASSWORD=
SEED_LEA_PASSWORD=
# Laufzeit
PORT=4321