# Entscheidungs- und Änderungslog ## 2026-07-05 — Projektstart (MVP) - **Stack:** Python/Flask + segno statt Node (Briefing-Vorschlag). Begründung: Hetzner-Deploy-Muster ist Python + systemd; `csv` ist Stdlib, segno rendert QR als SVG ohne weitere Abhängigkeiten. Herbs Entscheidung nach Vorlage. - **Scope-Kürzungen gegenüber Briefing:** kein XLSX-Upload (CSV reicht, Excel/LO können das), Schema-Designer minimal (Name + Typ), keine Süßholz-Features. - **Architektur-Trennung:** öffentliche Seiten sind beim Upload fertig gerendertes, in sich geschlossenes HTML (QR inline als SVG) → Nginx statisch; der Flask-Prozess existiert nur fürs Admin-Panel (Dropzone, Schema-Designer, Linkliste, Versionen) hinter Nginx Basic Auth. - **Herbs Erweiterung zum Briefing:** Admin-Panel mit Dropzone, automatischer Versions-Zuordnung (Dateiname → Header-Signatur → manuelle Wahl), CSV-Versionen jederzeit downloadbar, Linkliste mit QR pro Tabelle. Das beantwortet die offene Briefing-Frage: Upload läuft auf dem Server, nicht als lokales CLI. - **Validierung:** fehlerhafte CSVs werden komplett abgelehnt (Zeile/Spalte in der Fehlermeldung), nichts wird halb veröffentlicht. - **Encoding-Realität:** Vorlagen mit Semikolon + UTF-8-BOM (deutsches Excel); Upload-Decoder probiert utf-8-sig, dann cp1252; Delimiter wird gesnifft. - **Design:** Tokens als CSS-Variablen in `table.css`; Systemfont-Fallbacks für Source Serif 4 / Fira Sans, bewusst kein Google-CDN (Schulkontext). Vertiefung später. - **Global:** Docker-Default aus den Infrastruktur-Regeln gestrichen — Docker nur noch als Vorschlag für Projekte mit eigenem Ökosystem.