Files
Rbm.FamStack/docs/adr/0009-profilbilder-in-der-datenbank.md
T
2026-10-09 18:54:02 +02:00

1.1 KiB
Raw Blame History

ADR-0009: Profilbilder in der Datenbank

  • Status: akzeptiert
  • Datum: 2026-10-09

Kontext

Benutzer erhalten ein optionales Profilbild. Die Datenmenge ist klein (wenige Familienmitglieder), Backups sollen einfach bleiben (ein SQL-Backup, siehe deploy/scripts/backup.sh), und es soll kein zusätzliches Volume nötig sein.

Entscheidung

  • Bilder liegen in der Tabelle UserAvatars (1:1 zum Benutzer, varbinary(max)), höchstens 1 MB.
  • Erlaubt sind PNG, JPEG und WebP. Der Typ wird serverseitig anhand der Datei-Signatur (Magic Bytes) bestimmt – Dateiname und Content-Type des Clients werden ignoriert; SVG ist bewusst ausgeschlossen (Skript-Risiko).
  • Auslieferung über GET /api/users/{id}/avatar (nur für angemeldete Benutzer). Die URL enthält eine Version (?v=…), daher Cache-Control: private, max-age=604800.
  • Hochladen/Entfernen nur über die Admin-Api (PUT/DELETE /api/admin/users/{id}/avatar). Ein Selbst-Upload durch Benutzer kann später ergänzt werden.

Konsequenzen

Keine Dateisystem-Abhängigkeit, Bilder sind Teil des Datenbank-Backups. Für große Bildmengen (z. B. Chat-Anhänge, Phase 8) wird separat entschieden.