Hamido212/checkit

Open-source departure boards for Android widgets, Windows and the web. Made in Bremen, powered by Transitous/MOTIS across many countries.

Kotlin

0

4 commits

updated Sep 18, 2026

See the code
android-widget
bremen
gtfs
motis
open-source
public-transport
pwa
transit
transitous

See what people are saying (1)

SourceMessageScoreDate

I built an open-source departure widget so the next tram is one glance away (r/SideProject)

I'm building Checkit in Bremen, Germany: a small departure board for an Android home-screen widget, a Windows desktop window and the browser. Pick a stop and see the minutes remaining, with delays and cancellations when the feed provides them. It uses Transitous/MOTIS. I checked sample stops in…

1

Sep 19, 2026

README

Checkit

Deine Haltestelle. Bei dir. Kostenlose, nichtkommerzielle Abfahrtsanzeige für Bremen.

Website & Downloads · Live-Board · Releases

Was funktioniert

  • Bremen Hauptbahnhof als Standard, Haltestellensuche und gespeicherte Auswahl.
  • Bus, Straßenbahn und Regionalverkehr über Transitous/MOTIS; Verspätungen, Ausfälle und Kennzeichnung von Echtzeit gegenüber Fahrplan.
  • Responsive Website mit Live-Vorschau und eigenem Abfahrtsboard; installierbare Web-App mit lokalem Offline-Stand.
  • Native Android-App mit Glance-Homescreen-Widget, echten Spalten, anpassbarer Zeilenanzahl, manueller Aktualisierung, WorkManager und lokalem Cache.
  • Natives portables Windows-Desktop-Widget: verschieben, skalieren, im Vordergrund halten, Haltestelle wählen, Einstellungen speichern.
  • Vorlage für GitHub Actions unter docs/workflows/build.yml (noch nicht aktiviert; der verbundene GitHub-Zugang hat keinen Workflow-Schreibzugriff).

Windows ist ein eigenständiges Desktop-Fenster, keine Erweiterung des Windows-11-Widgets-Panels. iPhone verwendet die Web-App (Safari → Teilen → Zum Home-Bildschirm). Ein natives iOS-Widget ist nicht enthalten; dafür sind Xcode, Apple-Signierung und ein separater WidgetKit-Build erforderlich.

Installieren

Android: checkit-android.apk aus den Releases installieren, Checkit öffnen, Haltestelle auswählen und „Widget hinzufügen“ tippen. Alternativ über das Widgets-Menü des Launchers. Alle Widgets verwenden dieselbe Haltestelle. Ein vorhandener alter Debug-Build hat einen anderen Signaturschlüssel und muss vor dem Wechsel zur Release-APK deinstalliert werden (lokale Auswahl geht dabei verloren).

Windows: Checkit.exe herunterladen und direkt starten. Keine Installation notwendig. Alternativ die portable ZIP entpacken. Keine zusätzliche .NET-Installation nötig. Über die Kopfzeile verschieben, unten rechts skalieren; ◇ schaltet „Immer im Vordergrund“ um. Die EXE ist nicht mit einem kommerziellen Windows-Code-Signing-Zertifikat signiert.

Aktualisierung

Web und Windows: 60 Sekunden. API-Cache: 45 Sekunden. Android: Live-Modus mit dauerhafter Benachrichtigung lädt bei eingeschaltetem Bildschirm jede Minute neue Daten; Widget-Minuten und abgelaufene Abfahrten werden alle zehn Sekunden aktualisiert. Alle Widgets teilen denselben Datenstand. Ohne Live-Modus bleibt der ungefähre 15-Minuten-Hintergrundrhythmus von Android. Hersteller-Energiesparfunktionen können den Dienst stoppen (bei Xiaomi gegebenenfalls Autostart und Akku → Keine Beschränkungen erlauben). Restzeiten werden nie negativ. Ergänzende Uhrzeiten sind Europe/Berlin. Datenstand und veraltete Daten werden sichtbar gekennzeichnet. Keine Garantie der Echtzeitabdeckung oder Abfahrtsdaten.

Lokal starten

Node.js 22 oder neuer:

npm start
npm test
npm run build

Öffnen: http://127.0.0.1:8787. Keine npm-Laufzeitabhängigkeiten nötig.

Android bauen

JDK 17+, Android SDK 34. android/gradlew -p android assembleDebug.

Unter Windows erzeugt scripts/build-android.ps1 einen signierten Release-Build. Der private Schlüssel liegt ausschließlich in %LOCALAPPDATA%\CheckitSigning\checkit-release.jks, das Passwort Windows-DPAPI-verschlüsselt daneben. Beide gehören nicht in Git. Diesen Schlüssel sicher sichern: künftige APK-Updates benötigen denselben Schlüssel. Für andere Build-Umgebungen CHECKIT_KEYSTORE und CHECKIT_KEY_PASSWORD setzen. Die CI-Vorlage erzeugt absichtlich nur Debug-Testartefakte, keine anders signierten öffentlichen Updates.

API-Adresse überschreiben: -PapiBaseUrl=https://dein-projekt.vercel.app. Der Standard zeigt auf die veröffentlichte Checkit-API. Nur HTTPS ist für die Distribution erlaubt.

Widget-Gerätetest mit laufendem Emulator: android/gradlew -p android connectedDebugAndroidTest. Er lädt echte Daten, hostet das echte Glance-Widget in drei Größen und prüft Zeitspalten und Datenstand. Debug-Testhost ist nicht Bestandteil der Release-App.

Windows bauen

dotnet publish windows/Checkit.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o artifacts/windows

Benötigt .NET 10 SDK. Einstellungen/Cache: %LOCALAPPDATA%\Checkit.

Vercel

npx vercel deploy --prod

vercel.json verwendet statische Dateien aus public und eine Node-Funktion unter api/index.js. Website und native Clients teilen denselben normalisierten API-Vertrag. APK/EXE/ZIP liegen in GitHub Releases, nicht im Vercel-Build.

Daten, Lizenz und Grenzen

Code: MIT. Daten unter den jeweiligen Transitous-Quelllizenzen, einschließlich © OpenStreetMap-Mitwirkende. Beachte die Transitous-Nutzungsbedingungen: öffentliche Open-Source-Anwendung, nichtkommerziell, geringe Last. Bei größerer Nutzung muss die Infrastruktur mit dem Anbieter abgestimmt werden. Keine offizielle Anwendung von BSAG oder VBN. VbnProvider bleibt ein nicht aktivierter Erweiterungspunkt; ein eigener VBN-Feed ist nicht implementiert.

Keine Accounts, kein Tracking, kein Datenbankdienst. Präferenzen und Cache bleiben lokal. Vercel und GitHub verarbeiten technische Verbindungsdaten beim Abruf.

Windows-Icon-Regressionsprüfung: powershell.exe -NoProfile -STA -File scripts/test-windows-icon.ps1. Nach dem Publish zusätzlich die tatsächlich ausgelieferte EXE starten und das Live-Fenster prüfen.

Contributors

Hamido212

4 commits

Hamido212/checkit

Open-source departure boards for Android widgets, Windows and the web. Made in Bremen, powered by Transitous/MOTIS across many countries.

Kotlin

0

4 commits

updated Sep 18, 2026

See the code
android-widget
bremen
gtfs
motis
open-source
public-transport
pwa
transit
transitous

See what people are saying (1)

SourceMessageScoreDate

I built an open-source departure widget so the next tram is one glance away (r/SideProject)

I'm building Checkit in Bremen, Germany: a small departure board for an Android home-screen widget, a Windows desktop window and the browser. Pick a stop and see the minutes remaining, with delays and cancellations when the feed provides them. It uses Transitous/MOTIS. I checked sample stops in…

1

Sep 19, 2026

README

Checkit

Deine Haltestelle. Bei dir. Kostenlose, nichtkommerzielle Abfahrtsanzeige für Bremen.

Website & Downloads · Live-Board · Releases

Was funktioniert

  • Bremen Hauptbahnhof als Standard, Haltestellensuche und gespeicherte Auswahl.
  • Bus, Straßenbahn und Regionalverkehr über Transitous/MOTIS; Verspätungen, Ausfälle und Kennzeichnung von Echtzeit gegenüber Fahrplan.
  • Responsive Website mit Live-Vorschau und eigenem Abfahrtsboard; installierbare Web-App mit lokalem Offline-Stand.
  • Native Android-App mit Glance-Homescreen-Widget, echten Spalten, anpassbarer Zeilenanzahl, manueller Aktualisierung, WorkManager und lokalem Cache.
  • Natives portables Windows-Desktop-Widget: verschieben, skalieren, im Vordergrund halten, Haltestelle wählen, Einstellungen speichern.
  • Vorlage für GitHub Actions unter docs/workflows/build.yml (noch nicht aktiviert; der verbundene GitHub-Zugang hat keinen Workflow-Schreibzugriff).

Windows ist ein eigenständiges Desktop-Fenster, keine Erweiterung des Windows-11-Widgets-Panels. iPhone verwendet die Web-App (Safari → Teilen → Zum Home-Bildschirm). Ein natives iOS-Widget ist nicht enthalten; dafür sind Xcode, Apple-Signierung und ein separater WidgetKit-Build erforderlich.

Installieren

Android: checkit-android.apk aus den Releases installieren, Checkit öffnen, Haltestelle auswählen und „Widget hinzufügen“ tippen. Alternativ über das Widgets-Menü des Launchers. Alle Widgets verwenden dieselbe Haltestelle. Ein vorhandener alter Debug-Build hat einen anderen Signaturschlüssel und muss vor dem Wechsel zur Release-APK deinstalliert werden (lokale Auswahl geht dabei verloren).

Windows: Checkit.exe herunterladen und direkt starten. Keine Installation notwendig. Alternativ die portable ZIP entpacken. Keine zusätzliche .NET-Installation nötig. Über die Kopfzeile verschieben, unten rechts skalieren; ◇ schaltet „Immer im Vordergrund“ um. Die EXE ist nicht mit einem kommerziellen Windows-Code-Signing-Zertifikat signiert.

Aktualisierung

Web und Windows: 60 Sekunden. API-Cache: 45 Sekunden. Android: Live-Modus mit dauerhafter Benachrichtigung lädt bei eingeschaltetem Bildschirm jede Minute neue Daten; Widget-Minuten und abgelaufene Abfahrten werden alle zehn Sekunden aktualisiert. Alle Widgets teilen denselben Datenstand. Ohne Live-Modus bleibt der ungefähre 15-Minuten-Hintergrundrhythmus von Android. Hersteller-Energiesparfunktionen können den Dienst stoppen (bei Xiaomi gegebenenfalls Autostart und Akku → Keine Beschränkungen erlauben). Restzeiten werden nie negativ. Ergänzende Uhrzeiten sind Europe/Berlin. Datenstand und veraltete Daten werden sichtbar gekennzeichnet. Keine Garantie der Echtzeitabdeckung oder Abfahrtsdaten.

Lokal starten

Node.js 22 oder neuer:

npm start
npm test
npm run build

Öffnen: http://127.0.0.1:8787. Keine npm-Laufzeitabhängigkeiten nötig.

Android bauen

JDK 17+, Android SDK 34. android/gradlew -p android assembleDebug.

Unter Windows erzeugt scripts/build-android.ps1 einen signierten Release-Build. Der private Schlüssel liegt ausschließlich in %LOCALAPPDATA%\CheckitSigning\checkit-release.jks, das Passwort Windows-DPAPI-verschlüsselt daneben. Beide gehören nicht in Git. Diesen Schlüssel sicher sichern: künftige APK-Updates benötigen denselben Schlüssel. Für andere Build-Umgebungen CHECKIT_KEYSTORE und CHECKIT_KEY_PASSWORD setzen. Die CI-Vorlage erzeugt absichtlich nur Debug-Testartefakte, keine anders signierten öffentlichen Updates.

API-Adresse überschreiben: -PapiBaseUrl=https://dein-projekt.vercel.app. Der Standard zeigt auf die veröffentlichte Checkit-API. Nur HTTPS ist für die Distribution erlaubt.

Widget-Gerätetest mit laufendem Emulator: android/gradlew -p android connectedDebugAndroidTest. Er lädt echte Daten, hostet das echte Glance-Widget in drei Größen und prüft Zeitspalten und Datenstand. Debug-Testhost ist nicht Bestandteil der Release-App.

Windows bauen

dotnet publish windows/Checkit.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -p:IncludeNativeLibrariesForSelfExtract=true -o artifacts/windows

Benötigt .NET 10 SDK. Einstellungen/Cache: %LOCALAPPDATA%\Checkit.

Vercel

npx vercel deploy --prod

vercel.json verwendet statische Dateien aus public und eine Node-Funktion unter api/index.js. Website und native Clients teilen denselben normalisierten API-Vertrag. APK/EXE/ZIP liegen in GitHub Releases, nicht im Vercel-Build.

Daten, Lizenz und Grenzen

Code: MIT. Daten unter den jeweiligen Transitous-Quelllizenzen, einschließlich © OpenStreetMap-Mitwirkende. Beachte die Transitous-Nutzungsbedingungen: öffentliche Open-Source-Anwendung, nichtkommerziell, geringe Last. Bei größerer Nutzung muss die Infrastruktur mit dem Anbieter abgestimmt werden. Keine offizielle Anwendung von BSAG oder VBN. VbnProvider bleibt ein nicht aktivierter Erweiterungspunkt; ein eigener VBN-Feed ist nicht implementiert.

Keine Accounts, kein Tracking, kein Datenbankdienst. Präferenzen und Cache bleiben lokal. Vercel und GitHub verarbeiten technische Verbindungsdaten beim Abruf.

Windows-Icon-Regressionsprüfung: powershell.exe -NoProfile -STA -File scripts/test-windows-icon.ps1. Nach dem Publish zusätzlich die tatsächlich ausgelieferte EXE starten und das Live-Fenster prüfen.

Contributors

Hamido212

4 commits

Languages

Kotlin

50.4%

JavaScript

21.9%

HTML

14.4%

C#

10.4%

PowerShell

2.9%