Files
patrickandClaude Sonnet 5 e42cae74f3 feat: TimeMaster Kiosk Grundgerüst (Login + Stempeln)
Android-Tablet-Kiosk-App, gedacht für Betrieb hinter WireGuard-VPN.
Bearer-Token-Geräte-Auth statt Ed25519-Request-Signing (siehe Backend-
Commit f4ff11a im Haupt-Repo). Ersteinrichtung (Server-URL+Token), PIN/
NFC/Listen-Login, Stempeln Ein/Aus/Pause, Heartbeat-Loop.

Bekannte Einschränkung: Android-NFC (13,56 MHz) ist inkompatibel zu den
125-kHz-EM4100-Karten der bestehenden PC-Terminals – separate Karten nötig,
siehe README.

Vollständiger Plan: /home/sysops/.claude/plans/staged-marinating-dove.md

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
2026-09-10 02:23:59 +02:00

50 lines
2.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# TimeMaster Kiosk (Flutter)
Stempeluhr-App für Android-Tablets, gedacht für den Betrieb hinter WireGuard-
VPN (feste Geräte-IP). Kein Ed25519-Request-Signing wie beim Browser-PC-
Terminal – Geräte-Auth läuft über ein einfaches Bearer-Token, siehe
`backend/app/core/kiosk_security.py::_verify_bearer_device` im Haupt-Repo.
Vollständiger Architektur-Plan: `/home/sysops/.claude/plans/staged-marinating-dove.md`.
## Ersteinrichtung
1. Auf dem Server: `python cli.py kiosk add --company "Acme GmbH" --name "Eingang" --auth-mode bearer [--ip-whitelist 10.8.0.0/24]`
2. CLI gibt Token **einmalig** aus – in der App unter „Ersteinrichtung" zusammen mit der Server-URL eintragen.
3. Gerät erscheint in `KioskDevicesPage` als „pending" – Admin genehmigt.
## Login-Modi
- **PIN**: Personalnummer + PIN (`POST /kiosk/auth/pin`)
- **NFC**: Kartenscan (Android-eigenes NFC, 13,56 MHz/ISO14443) + Pflicht-PIN
als Zweitfaktor (`POST /kiosk/auth/nfc`)
- **Liste**: Mitarbeiter aus Liste tippen (`POST /kiosk/auth/list`)
**Wichtig – Hardware-Inkompatibilität:** Die PC-Terminals nutzen einen
125-kHz-EM4100-Leser (HID-Keyboard-Wedge, siehe `project_kiosk_hardening`-
Memory). Android-NFC liest nur 13,56-MHz-Karten (ISO14443/Mifare/NTAG).
**Bestehende Mitarbeiterkarten für die PC-Terminals funktionieren NICHT am
Tablet** und umgekehrt – für Tablet-NFC-Login werden separate 13,56-MHz-
Karten/Tags benötigt, die zusätzlich über `POST /users/{id}/kiosk-nfc`
hinterlegt werden müssen (gleiches Feld, zwei unterschiedliche physische
Kartentypen).
## Build
Kein lokales Flutter-SDK nötig – Build läuft auf root@192.168.1.236
(gleiche Umgebung wie `timemaster-mobile`, siehe dortige Memory-Notiz
`project_android_app.md` für Setup-Details: `flutteruser`, `/opt/flutter`,
`/opt/android-sdk`).
```bash
# Auf 236, als flutteruser:
cd /opt/timemaster-kiosk
flutter build apk --release --target-platform android-arm64
```
## Umfang v1
Nur Login + Stempeln + Heartbeat. Kein Offline-Modus, keine NTAG424-
Kryptografie, kein Android-Lock-Task/MDM (App läuft im normalen Vollbild,
kein Geräte-Pinning).