2.1 KiB
2.1 KiB
TT-014 — Go APK-Serve-Binary
Type: Story
Priority: High
Labels: go, tooling, server
Depends on: —
Blocks: TT-016 (serve_apk Make-Target)
Summary
Implementiere einen portablen HTTP-Server in Go der eine APK per WLAN bereitstellt.
Kein Python, kein Flask, keine externen Abhängigkeiten — nur Go Standard-Library.
Das kompilierte Binary scripts/serve/serve wird von make serve_apk gestartet.
Funktionsumfang
| Feature | Detail |
|---|---|
Landingpage / |
HTML-Template mit App-Name, Version, Größe, Build-Datum, SHA256 |
Download /download |
APK als Streaming-Response mit Content-Disposition |
SHA256-Endpoint /sha256 |
JSON: {"sha256":"…","filename":"…"} |
| No-Cache-Header | Cache-Control: no-store auf allen Responses |
| QR-Code im Terminal | qrencode -t UTF8 <url> via os/exec |
| Lokale IP | UDP-Trick: Verbindung zu 8.8.8.8:80, eigene IP ablesen |
| CLI-Flags | --dir build/apk (default), --port 8888, --debug |
| Versioninfo | APK-Dateiname parsen: timetrack-0.1.0+3.apk → Version + Build-Nummer |
| SHA256 Sidecar | .sha256-Datei neben APK lesen (Format: <hash> <pfad>) |
HTML-Template
- Design: modernes Card-Layout, dunkles Theme (Timetrack-Blau
#2563EB) - Felder: Version, Größe MB, Build-Datum, Plattform
- Verifizierungs-Sektion: SHA256 anzeigen + JS-Datei-Hash-Prüfung (Web Crypto API)
- Installationshinweis für Android (Sicherheitseinstellungen)
Go-Modul
scripts/serve/
go.mod (module timetrack/serve, go 1.21, keine externen deps)
main.go (alles in einem File — überschaubar)
Acceptance Criteria
go build -o serve ./scripts/serve/kompiliert ohne Fehler./serve --dir build/apk --port 8888startet Server- Landingpage zeigt korrekte Metadaten wenn APK vorhanden
/downloadliefert APK mit korrektem MIME-Type- QR-Code erscheint im Terminal (falls
qrencodeverfügbar) - Server startet auch wenn kein
qrencodevorhanden (graceful fallback) - Klarer Fehler wenn kein
.apkim--dirgefunden
Files to create
scripts/serve/go.modscripts/serve/main.go