2.2 KiB
2.2 KiB
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 erzeugt — kein externer API-Aufruf (DSGVO/Schulkontext).
Workflow
- Tabelle anlegen (
/admin/neu): Spalten benennen und Typ wählen (text,text_long,number,date,url,rating_5). - CSV-Vorlage herunterladen — Semikolon + UTF-8-BOM, öffnet in deutschem Excel/LibreOffice direkt korrekt.
- Befüllen in Excel/LibreOffice, als CSV speichern.
- 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.
- Fertig: Seite liegt unter
https://table.lehrstun.de/<slug>/, 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/<slug>/schema.json+versions/*.csv), keine Datenbank
Entwicklung
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:
ssh herb@46.225.114.15
cd ~/qr-tabellen && git pull && sudo systemctl restart qr-tabellen