Interner Projektbericht

Echo-Station

Eine stationäre Such- und Kopierstation für Predigten und andere Audiobeiträge der Gemeinde. Besucher suchen, filtern und kopieren Inhalte am Touchscreen auf einen USB-Stick – ohne technische Vorkenntnisse.

Stand: 11. Juli 2026 v0.6.0-beta.1 · Backend/Kiosk aktiv · V2-Richtung festgelegt Altbetrieb unverändert · EchoStation-Struktur noch nicht freigegeben Andreas Driss

Funktionsübersicht

Der Besucher-MVP läuft weiter unverändert auf der bestehenden Altquelle. EchoStation ist als einzige künftige Audioquelle beschlossen; Tontechnik und IT finalisieren jedoch zuerst die reale Ordnerstruktur. Bis zu deren Freigabe gibt es keinen Mountwechsel und keine V2-Implementierung aus Annahmen.

📋 Inhaltsliste anzeigen
Fertig
Besucher sehen eine vollständige Liste verfügbarer Audiobeiträge mit Titel, Sprecher, Kategorie und Datum.
🔍 Suche & Filter
Fertig
Suchfeld, Backend-Volltextsuche, Kategorie-Filter und Sortierung sind im Besucher-Frontend aktiv. Das Suchfenster scrollt jetzt auch per Finger-/Pointer-Drag auf dem Kiosk-Panel.
🤖 KI-Unterstützung
Geplanter Case
Mögliche spätere Verbesserung für Suche und Admin-Assistenz. Sie ist kein aktuelles V2-Gate und darf die Strukturinventur, den direkten USB-Export oder den Cutover nicht verzögern.
💾 USB-Stick kopieren
MVP + Abziehfall abgenommen
USB-Export ist grün: echter Stick bereit, Einzel- und Mehrfachkopie, wiederholtes Kopieren mit konfliktfreien Dateinamen, Abziehen während der Kopie sowie externe Datei- und Abspielprüfung sind bestanden.
🔄 Daten-Synchronisation
V1 läuft · V2 wartet
Der bestehende V1-Sync bleibt bis zum harten Cutover unverändert. Weitere Timer-, Event-Sync- oder Cache-Erweiterungen sind nicht Teil der aktuellen V2-Vorbereitung.
🗄️ NAS als Quelle
Struktur ausstehend
EchoStation wird die einzige künftige Audioquelle. Tontechnik und IT legen zuerst den endgültigen Arbeitsablauf und die Ordnerstruktur fest; danach folgt eine vollständige read-only Inventur.
🏷️ Inhaltstypen
Fertig
Predigt, Lied, Bibelarbeit, Zeugnis, Moderation und weitere werden automatisch erkannt und in der Datenbank gespeichert.
🔐 Admin-Bereich
NAS + Sperre live
PIN-basierte Admin-Auth ist am echten Kiosk in Betrieb. Kiosk-Unlock trennt jetzt Freigabe und Admin-Session; NAS-Status, Event-Liste, DB-Backup, Dry-Run, produktive Ein-Event-Freigabe, Admin-Lock und Freigabe-Buttons sind live.
🖥️ FullHD-Kiosk & Touch
Beta live
FullHD-Galerie, betonte Sammelleiste, Overlay-Scrolling und die finalen Lock-Screen-/Service-Scroll-Fixes sind auf dem Pi deployt. Kiosk-Flags, labwc/getty-Hardening und Fernzugriff sind abgeschlossen.
🪟 Chromium-Fensterkontrolle
Gehärtet
Der Kiosk startet mit dediziertem Chromium-Profil als App-Fenster. Chromium läuft mit Keychain-/Sync-Schutz; labwc/getty-Hardening ist live, rebootfest geprüft und ohne Desktop, Panel oder tty1-Autologin.
📅 Kalender & Kiosk-Freigabe
Sperre live
Resolver und Statusanzeige laufen am echten Kiosk. Der öffentliche Status bleibt ohne Auth erreichbar; Simple-Lock, Admin-Lock und /api/v1/kiosk/unlock sind deployt. Diese Funktion bleibt beim V2-Umbau erhalten.
🧭 V2-Neuausrichtung
Gate 0
Greenfield-SQLite/FTS, kein permanenter Pi-Audiocache und direkter NAS-zu-USB-Export sind beschlossen. Parser und Datenmodell entstehen erst aus der freigegebenen realen Struktur.
🔧 Wartung & Fernzugriff
Fertig
Fernzugriff für Wartung ist eingerichtet und intern dokumentiert. Doku-only Pulls funktionieren; sensible Verbindungsdetails stehen bewusst nicht auf der öffentlichen Statusseite.
💿 Backup
Fertig
Automatisches Backup der Datenbank per Script und Timer ist eingerichtet. Wiederherstellung nach Fehler ist möglich.

Was das System kann

Übersicht der vorhandenen und geplanten Funktionen in Kurzform.

🗂️
Medienkatalog
Alle Audiodateien werden automatisch eingelesen. Titel, Sprecher, Datum, Dauer und Kategorie werden aus den Datei-Informationen ausgelesen und gespeichert.
Aktiv
🔎
Volltextsuche
Schnelle Suche über Titel und Sprecher. Das Suchfeld nutzt die Backend-Volltextsuche, inklusive On-Screen-Tastatur und korrigiertem Finger-/Pointer-Scroll im Suchfenster.
Aktiv
📂
Kategorien & Filter
Predigt, Lied, Bibelarbeit, Zeugnis, Moderation, Geschichte, Gedicht, Einleitung, Familienvortrag. Kategoriefilter im Frontend bereits nutzbar.
Aktiv
🤖
KI-Unterstützung
Geplanter Folge-Case für bessere Suche, automatische Vorschläge, Kategorisierungshilfe und spätere Admin-Assistenz. Nicht Teil des abgenommenen USB-Besucher-MVP.
Geplant
📅
Kalender-Zeitsteuerung
Reguläre Gottesdienste steuern, wann der Kiosk freigegeben oder gesperrt ist. Resolver, öffentlicher Status-Endpunkt, Simple-Lock, Admin-Lock und Admin-Statusanzeige sind am Pi verifiziert.
Sperre live
🔐
Admin-Auth
Lokales First-Run-Setup, signiertes HttpOnly-Session-Cookie, Rate-Limit und PIN-Wechsel sind im laufenden V1-System implementiert. Die genaue V2-Auth-Konfiguration wird im Greenfield-Vertrag übernommen und getestet.
Touch abgenommen
📤
USB-Export
Besucher wählen Beiträge aus und kopieren sie auf ihren USB-Stick. Einzelkopie, Mehrfachkopie, Namenskollisionen, externe Datei-/Abspielprüfung und Auswahl-Limit-Fehlerfall sind am echten Pi bestanden.
MVP abgenommen
🖥️
Kiosk-Probebetrieb
FullHD-Layout, Sammelleiste, Suche, Sammlung und Chromium-Fensterkontrolle sind am Pi verifiziert. Der Stand ist als v0.6.0-beta.1 für Geräte- und Bedienprüfung markiert.
Beta live
🔗
NAS-Integration
Die bestehende V1-Anbindung bleibt bis zum Cutover in Betrieb. EchoStation wird danach alleinige Quelle; die technische Umsetzung wartet auf die von Tontechnik und IT freigegebene Ordnerstruktur.
Übergang geplant

Was bisher umgesetzt wurde

Alle abgeschlossenen Arbeitsschritte seit Projektbeginn – chronologisch und sachlich.

Projektstruktur angelegt
Backend, Frontend, Infrastruktur und Dokumentation klar getrennt. Qualitätsregeln eingerichtet (TypeScript, Linting, Tests, Git-Hooks).
Backend aufgebaut
API-Server mit Fehlerbehandlung, Logging und Validierung. Läuft stabil auf dem Raspberry Pi.
Datenbank erstellt
SQLite mit Migrationen für Grundmodell, Volltextsuche, Cache-Felder und Inhaltstypen. Automatisches Backup eingerichtet.
Synchronisation implementiert
Audiodateien aus lokalem Ordner und NAS werden eingelesen, analysiert und in der Datenbank gespeichert. Duplikate werden erkannt.
NAS-Anbindung produktiv verifiziert
Verbindung zur echten NAS auf dem Pi geprüft und der lokale Katalog/Cache produktiv aufgebaut. Kontrollierte Event- und Batch-Syncs sind produktiv gelaufen; breite Jahres- und Root-Pfade bleiben bewusst kein pauschal freigegebener Sync-Pfad.
Inhaltstypen (v1) eingeführt
Fachliche Zuordnung festgelegt und umgesetzt: Predigt, Lied, Bibelarbeit, Zeugnis, Moderation, Geschichte, Gedicht, Einleitung, Familienvortrag. Mit Tests abgesichert.
Frontend-Basis umgesetzt
Inhaltsliste mit Suchfeld, On-Screen-Tastatur, Kategoriefilter, Sortierung und Kategorieanzeige. Filter-Verhalten stabilisiert und verifiziert.
Kiosk-Betrieb eingerichtet
Raspberry Pi startet automatisch in den Vollbild-Kiosk-Modus. Systemd-Konfigurationen versioniert und dokumentiert.
Deployment-Ablauf definiert
Klarer Prozess für Updates: Entwicklung auf Mac → Git Push → Pull und Build auf dem Pi → Neustart. Übergabedokumentation gepflegt.
Projektdokumentation aufgebaut
Backlog, Architektur, Handover, NAS-Analyse und Mapping-Entscheidungen als eigene Dokumente gepflegt.
USB-Export-Flow umgesetzt
Backend-Job-API, Mehrfachauswahl, Speicherprüfung und Fortschritt per Polling im Repo umgesetzt. Musik hören am Kiosk ist bewusst aus dem MVP gestrichen.
USB-Auswahl-Bug behoben
Das USB-Status-Polling setzte die Beitragsauswahl wiederholt zurück, solange kein Stick steckte. Behoben per Flanken-Logik: Die Auswahl wird nur noch beim tatsächlichen Abziehen des Sticks geleert. Build, Lint und Format-Check sind grün.
Cache-Abruf erweitert (Backend)
Logik zum gezielten Abrufen und zum Bulk-Cachen aller Remote-Einträge ergänzt, deployed und mit Tests abgesichert.
Lokalen Katalog aufgebaut
Der historische V1-Katalog und lokale Cache wurden produktiv aufgebaut. Diese Bestandszahlen bleiben V1-Historie und definieren weder V2-Datenmodell noch EchoStation-Struktur.
Kiosk-Zeitstatus und Sperre live
Resolver, öffentlicher Status-Endpunkt, Admin-Statusanzeige, Simple-Lock und Admin-Lock sind auf dem echten Kiosk deployt. Die neuen Statusfelder lockMode, lockedAt, scheduleActive und scheduleActiveUntil sind live.
Admin-Auth C2 abgenommen
First-Run-PIN-Setup, Login, Statusansicht und PIN-Wechsel sind am echten Kiosk-Touchscreen erfolgreich durchgeführt. Session-Cookie, Rate-Limit und Migration 008 sind auf dem Pi aktiv.
USB-Export MVP abgenommen
Echter Stick am Pi erkannt, Einzelkopie und Mehrfachkopie bestanden, wiederholtes Kopieren erzeugt konfliktfreie Dateinamen, MP3-Dateien sind extern vorhanden und abspielbar. Abziehen während der Kopie ist mehrfach geprüft: Der Kopiervorgang stoppt, der Zustand wird auf den Stand vor dem Kopierstart zurückgesetzt, die Sammelliste kann erneut gestartet werden und es werden nur noch fehlende Dateien kopiert. Der Auswahl-Limit-Fehlerfall ist geprüft; die Grenze liegt nun bei 700 Einträgen und die Fehlermeldung ist per OK-Button schließbar.
FullHD-Kiosk-Design auf dem Pi geprüft
Galerie-Maske, Floating-Pfeile, neutrale Jahresauswahl, vereinfachte Demnächst-Karten und die deutlichere Sammelleiste sind auf dem FullHD-Kiosk deployt.
Overlay-Scroll und Chromium-Fensterkontrolle stabilisiert
Suche und Sammlung scrollen auf dem Kiosk per Pointer-Drag. Das Kiosk-Skript bereinigt verwaiste Chromium-Reste; live geprüft ist ein sichtbares App-Fenster mit aktivem kiosk.service.
NAS-Event-Sync kontrolliert abgeschlossen
Admin-API akzeptiert gezielte eventRelativeRoots und sperrt produktive Läufe ohne exakt einen geplanten Event. Nach Backup und Dry-Run wurde 2026_MP3/GD_260527_Mi_mp3_a produktiv synchronisiert: Run 99, scanned=8, updated=8, missing=0, Event-State synced.
Admin-NAS-UX mit DB-Backup-Gate deployt
App-Code 2033583 ist auf dem Pi gebaut und Backend/Kiosk wurden neu gestartet. Die UI zeigt NAS-Status, Filter, Event-Auswahl, DB-Backup, Dry-Run-Ergebnis, produktive Ein-Event-Freigabe, Scheduler-Status und Run-History.
Kiosk-Sperre mit Simple/Admin-Modus deployt
App-Code 359e19d ist auf dem Pi gebaut. Der dezente Button „Bildschirm sperren" im Admin-Login-Dialog, Simple-Lock, Sperrbildschirm, Admin-Freigabe und „Administrativ sperren" sind am echten Touchscreen bestanden.
Kiosk-Sicherheits-/UI-Fix deployt
Die Kiosk-Sicherheitslinie ist technisch auf dem Pi: /api/v1/kiosk/unlock trennt Kiosk-Freigabe und Admin-Session, Lock-Screen und Service-Scroll sind stabilisiert, Hardening-Referenzen sind versioniert.
Kiosk-Hardening rebootfest aktiviert
Chromium läuft mit --use-mock-keychain und --disable-sync; labwc startet nach Reboot nur Environment-Import und kanshi. pcmanfm, wf-panel-pi, lxsession-xdg-autostart und tty1-Autologin bleiben aus.
Release 0.6.0-beta.1 live
Version 0.6.0-beta.1 ist auf dem Pi live. Backend-Health meldet die Version, Backend/Kiosk sind aktiv, Migration 011 ist angewendet und die Admin-Auth bleibt configured=true.

Was jetzt wirklich als Nächstes kommt

Die Reihenfolge ist verbindlich. Der bestehende Kiosk bleibt bis zum geprüften V2-Cutover unverändert.

1
EchoStation-Struktur fertigstellen
Tontechnik und IT legen ihren tatsächlichen Ablageablauf, Ordnernamen und Verantwortlichkeiten fest und geben die Struktur anschließend ausdrücklich frei.
2
Vollständig read-only inventarisieren
Erst nach Freigabe werden mehrere Jahre, alle Hierarchieebenen, vollständige MP3-Pfade, ID3-/Datumsquellen, Sonderzeichen, Berechtigungen und Abweichungen untersucht.
3
V2-Vertrag aus dem Befund ableiten
Die reale Struktur bestimmt Parser, SQLite-Schema, Indexer, dynamische Navigation, Suche, Verfügbarkeitsanzeige und NAS-zu-USB-Export. Vermutete Zwischenebenen werden nicht implementiert.
4
Greenfield-V2 bauen und als Candidate prüfen
Neue SQLite-/FTS-Datenbank, kein permanenter MP3-Cache, direkter speicherbegrenzter USB-Export sowie vollständige Backend-, Frontend-, Backup-, Reboot- und Hardwaretests.
5
Erst danach harter Cutover
EchoStation wird ohne produktiven Parallelbetrieb zur einzigen Quelle. Alte Datenbank, Backups und Cache werden nur nach Candidate-Abnahme und separater Purge-Manifestfreigabe entfernt.

Von der realen Ordnerstruktur zum harten Cutover

Keine feste Terminannahme: Tontechnik und IT schließen zuerst Gate 0. Die Technik folgt dem realen Befund.

Gate 0
Arbeitsablauf und Ordnerstruktur freigeben
EchoStation wird von Tontechnik und IT fertig eingerichtet und für die technische Bestandsaufnahme eingefroren. Bis dahin kein Mountwechsel und keine strukturbasierte Implementierung.
Wartet auf Tontechnik/IT
Gate 1
Read-only Inventur
Reale Jahre, Pfade, Kategorien, MP3-Dateien, ID3-Felder, Datumsquellen, Sonderfälle, Mengen und Rechte erfassen. Nur anonymisierte Fixtures gelangen ins Repo.
Read-only
Gate 2
V2-Verträge festschreiben
Pfadidentität, Datum, autoritativer Scan, SQLite/FTS, API, Navigation, Verfügbarkeit, USB-Preflight und Zielnamen werden auf Basis der Inventur verbindlich.
Vertrag
Gate 3
Greenfield-V2 implementieren
Neue Datenbank und Indexer, dynamisches Frontend, direkter NAS-zu-USB-Export, Adminstatus, Backup/Restore und systemd – ohne permanenten Pi-Audiocache.
Implementierung
Gate 4
Candidate vollständig abnehmen
Autoritativer Vollindex, FTS, Stichproben, Touch, USB-Canary, Restore-Smoke, Last- und Reboot-Test müssen grün sein.
Abnahme
Gate 5
Harter Cutover und kontrollierter Purge
EchoStation wird alleinige Quelle. Erst nach erfolgreichem Produktions- und Backup-Smoke darf ein separat bestätigtes Allowlist-Manifest V1-Daten und Cache entfernen.
Kein Parallelbetrieb

Was die Reihenfolge absichert

Die wichtigsten Risiken liegen derzeit nicht im Programmcode, sondern in verfrühten Annahmen und einem zu frühen Cutover.

⚠️
Ordnerstruktur noch nicht final
Ein Parser gegen den heutigen Zwischenstand würde den späteren Arbeitsablauf der Tontechnik möglicherweise falsch abbilden. Deshalb beginnt die Implementierung erst nach ausdrücklicher Freigabe.
⚠️
Unbekannte Datumsquelle
Ordnernamen, Dateinamen und ID3-Felder müssen an echten vollständigen Pfaden geprüft werden. Das NAS-Änderungsdatum wird nicht als Aufnahmedatum geraten.
⚠️
Vorzeitiger Mountwechsel
Der bestehende Kiosk bleibt auf der Altquelle, bis V2 als Candidate vollständig geprüft ist. Ein früher Wechsel könnte Katalog, Suche und USB-Export gleichzeitig unterbrechen.
⚠️
Irreversibler V1-Purge
Alte Datenbank, Backups und Cache werden erst nach Candidate-, Restore-, Reboot- und USB-Abnahme über ein separat bestätigtes Allowlist-Manifest entfernt.
⚠️
Stand-Drift
Produktrepo, GitHub, Pi-Checkout, laufende Dienste und öffentliche Statusseite sind getrennte Stände. Jede Übergabe muss diese Ebenen ausdrücklich auseinanderhalten.
⚠️
USB- und NAS-Verfügbarkeit
V2 kopiert direkt von EchoStation. Deshalb müssen Rootidentität, Quellen, echter USB-Mount, freier Platz und Dateiversion vor der ersten USB-Mutation vollständig geprüft werden.

Nicht Teil des Projekts

Folgende Punkte sind kein Ziel – jetzt und auf absehbare Zeit nicht.

Online-Streaming Inhalte bleiben lokal. Kein Cloud-Zugriff, kein öffentlicher Stream.
Benutzerkonten Für einen lokalen Kiosk nicht nötig. Keine Logins für Besucher.
Cloud-Synchronisation Die NAS bleibt die einzige Quelle. Kein Sync mit externen Diensten.
Mobile App Keine separate App. Alles läuft am stationären Kiosk-Touchscreen.
Musik hören am Kiosk Direktes Abspielen, Player und Streaming-Endpunkte sind aus dem MVP gestrichen.
Video-Inhalte Ausschließlich Audio. Keine Video-Dateien oder -Streams geplant.