# QR-Tabellen Kleines selbst gehostetes Web-Tool für den Schuleinsatz: CSV-Tabellen (Stationenlernen, Materiallisten, Linksammlungen) werden hochgeladen und als statische HTML-Seite veröffentlicht — Link-Spalten bekommen automatisch QR-Codes. Läuft auf **https://table.lehrstun.de** (Admin unter `/admin/`, Basic Auth). Die Dateneingabe bleibt bewusst in Excel/LibreOffice; ausgetauscht wird nur CSV. QR-Codes werden lokal per [segno](https://pypi.org/project/segno/) erzeugt — kein externer API-Aufruf (DSGVO/Schulkontext). ## Workflow 1. **Tabelle anlegen** (`/admin/neu`): Spalten benennen und Typ wählen (`text`, `text_long`, `number`, `date`, `url`, `rating_5`). 2. **CSV-Vorlage herunterladen** — Semikolon + UTF-8-BOM, öffnet in deutschem Excel/LibreOffice direkt korrekt. 3. **Befüllen** in Excel/LibreOffice, als CSV speichern. 4. **In die Dropzone ziehen** — die Zieltabelle wird am Dateinamen erkannt, sonst an der Spalten-Signatur, sonst manuell wählbar. Validierungsfehler (kaputte URLs, Bewertung außerhalb 1–5) werden mit Zeile/Spalte gemeldet; fehlerhafte CSVs werden komplett abgelehnt. 5. **Fertig:** Seite liegt unter `https://table.lehrstun.de//`, jede Link-Zelle mit QR-Code. Die Linkliste im Admin zeigt alle Tabellen mit QR-Code und allen CSV-Versionen zum Download. ## Technik - Python 3.12+ · Flask · segno · gunicorn (nur Produktion) — sonst Stdlib - Öffentliche Seiten: beim Upload fertig gerendertes, in sich geschlossenes HTML (QR als Inline-SVG), von Nginx statisch ausgeliefert — bleiben auch bei gestoppter App online - Admin-Panel: Flask hinter Nginx Basic Auth, Ablage im Dateisystem (`data/tables//schema.json` + `versions/*.csv`), keine Datenbank ## Entwicklung ```bash python -m venv venv venv/Scripts/pip install -r requirements.txt # Windows venv/Scripts/python -m flask --app app.main run # Admin: http://localhost:5000/admin/ venv/Scripts/python tests/test_engine.py # Engine-Selbsttest ``` ## Deployment (Hetzner) Details in `deploy/` (systemd-Unit + Nginx-Vhost) und `CLAUDE.md`. Update: ```bash ssh herb@46.225.114.15 cd ~/qr-tabellen && git pull && sudo systemctl restart qr-tabellen ```