Self-Update Server: Version-Endpoint, APK-Hosting & Homepage mit QR-Code #83

Closed
opened 2026-05-17 00:22:46 +00:00 by jreinemann-euris · 0 comments
jreinemann-euris commented 2026-05-17 00:22:46 +00:00 (Migrated from github.com)

Feature: Server – Version-Endpoint, APK-Hosting & Homepage mit QR-Code

Part of: #69

Ziel

Der Server liefert Versionsinformationen über einen öffentlichen Endpoint, hostet die aktuelle APK als statische Datei und zeigt auf der Homepage einen QR-Code für den direkten APK-Download.

Scope

  • GET /api/version{ "versionCode": Int, "versionName": String, "apkUrl": String } (öffentlich, kein Auth)
  • Version aus application.conf lesen (konfigurierbar via Environment-Variablen)
  • APK-Datei aus server/data/ unter /static/app-latest.apk ausliefern (Ktor staticFiles)
  • Homepage GET / → HTML-Seite mit App-Name, Version und QR-Code (zeigt auf APK-Download-URL)
  • QR-Code: clientseitiges JS via CDN (qrcode.js) – keine Server-Dependency
  • /admin bleibt unverändert erreichbar unter /admin
  • APK-Download-URL für QR-Code: https://<server-host>/static/app-latest.apk (aus Request-Host abgeleitet)

Technische Hinweise

  • Bestehende Routing-Datei: server/src/main/kotlin/de/krisenvorrat/server/plugins/Routing.kt
  • Bestehende statische Ressourcen: staticResources("/admin", "static/admin") für Admin-UI
  • APK wird aus dem Dateisystem geladen (server/data/app-latest.apk), nicht aus Ressourcen (zu groß für JAR)
  • application.conf erweitern um krisenvorrat.appVersionCode und krisenvorrat.appVersionName
  • Homepage-HTML kann als Ktor respondHtml oder als Template-String gerendert werden

Akzeptanzkriterien

  • GET /api/version liefert JSON mit versionCode, versionName, apkUrl
  • GET /static/app-latest.apk liefert die APK-Datei (wenn vorhanden), 404 wenn keine APK hinterlegt
  • GET / zeigt eine HTML-Seite mit QR-Code, der auf die APK-Download-URL zeigt
  • /admin ist weiterhin erreichbar und funktioniert wie bisher
  • Server-Tests für den Version-Endpoint und Homepage-Route
## Feature: Server – Version-Endpoint, APK-Hosting & Homepage mit QR-Code Part of: #69 ### Ziel Der Server liefert Versionsinformationen über einen öffentlichen Endpoint, hostet die aktuelle APK als statische Datei und zeigt auf der Homepage einen QR-Code für den direkten APK-Download. ### Scope - `GET /api/version` → `{ "versionCode": Int, "versionName": String, "apkUrl": String }` (öffentlich, kein Auth) - Version aus `application.conf` lesen (konfigurierbar via Environment-Variablen) - APK-Datei aus `server/data/` unter `/static/app-latest.apk` ausliefern (Ktor `staticFiles`) - Homepage `GET /` → HTML-Seite mit App-Name, Version und QR-Code (zeigt auf APK-Download-URL) - QR-Code: clientseitiges JS via CDN (`qrcode.js`) – keine Server-Dependency - `/admin` bleibt unverändert erreichbar unter `/admin` - APK-Download-URL für QR-Code: `https://<server-host>/static/app-latest.apk` (aus Request-Host abgeleitet) ### Technische Hinweise - Bestehende Routing-Datei: `server/src/main/kotlin/de/krisenvorrat/server/plugins/Routing.kt` - Bestehende statische Ressourcen: `staticResources("/admin", "static/admin")` für Admin-UI - APK wird aus dem Dateisystem geladen (`server/data/app-latest.apk`), nicht aus Ressourcen (zu groß für JAR) - `application.conf` erweitern um `krisenvorrat.appVersionCode` und `krisenvorrat.appVersionName` - Homepage-HTML kann als Ktor `respondHtml` oder als Template-String gerendert werden ### Akzeptanzkriterien - [ ] `GET /api/version` liefert JSON mit `versionCode`, `versionName`, `apkUrl` - [ ] `GET /static/app-latest.apk` liefert die APK-Datei (wenn vorhanden), 404 wenn keine APK hinterlegt - [ ] `GET /` zeigt eine HTML-Seite mit QR-Code, der auf die APK-Download-URL zeigt - [ ] `/admin` ist weiterhin erreichbar und funktioniert wie bisher - [ ] Server-Tests für den Version-Endpoint und Homepage-Route
Sign in to join this conversation.
No description provided.