🌑

halb.at - Building a Better Reader for vol.at

halb.at screenshot

Vol.at ist die größte Nachrichtenplattform Vorarlbergs. Die Seite ist historisch gewachsen und das merkt man. Broken Features, ein Design welches sich nie ganz entschieden hat was es sein will und eine Kommentarspalte, die sich anfühlt, wie drei verschiedene Systeme die gleichzeitig laufen. Mich hat das irgendwann genug genervt, dass ich angefangen habe, selbst etwas zu bauen.

halb.at ist ein inoffizieller Reader und Analyse-Tool für vol.at. Es sammelt Artikel und Kommentare, speichert sie lokal und stellt sie in einer sauberen Oberfläche dar.

Ein detailliertes Show-Off dazu hier im Video


Was es macht

Der Reader-Teil ist straightforward: Artikel mit Volltext, Kommentarverläufe, Suche und Rubrik-Filter. Die Oberfläche ist schnell und nicht im Weg.

Der interessantere Teil sind die Statistiken. Für einzelne Artikel gibt es Engagement-Daten und Moderationsraten. Für jeden Kommentator gibt es ein eigenes Profil mit kompletter Kommentarhistorie, einer GitHub-ähnlichen Aktivitäts-Heatmap, Stunden-Verteilung und Themen-Breakdown.

Auf Seiten-Ebene gibt es Rankings nach Hitzigkeit (Kommentare in den ersten Stunden nach Veröffentlichung), kontroverse Kommentare mit gleichzeitig hohen positiven und negativen Votes, Trending-Ansichten und eine Wochentag-Rubrik-Matrix die zeigt wann welche Themen besonders aktiv sind.


Stack und ein paar Anmerkungen

Backend ist FastAPI, Frontend SvelteKit, Datenbank SQLite. Kein externes Data Warehouse, keine Cloud-Abhängigkeit.

SQLite trägt hier weiter als man erwarten würde. Mit WAL-Mode und ein paar PRAGMAs für Page-Cache und Memory-Mapped I/O läuft der Lese-Betrieb für mehrere gleichzeitige User problemlos. Schreiboperationen serialisieren sich sowieso, das ist bei diesem Use-Case kein Problem.

Der einzige Bereich wo SQLite Grenzen zeigt ist bei komplexen Statistik-Queries über große Zeiträume, aber auch das ist bis jetzt mit Indexen lösbar gewesen ohne auf etwas Schwereres wechseln zu müssen.