# TimeClock Android Frontend Phase 1 enthält die native Android-Grundapp und die gemeinsamen Compose-Design-Widgets. **Phase 2 (API- und Auth-Fundament)** ist umgesetzt: - Konfigurierbare API-Basis-URL (`BuildConfig.API_BASE_URL`), Standard: `https://stechuhr3.tsschulz.de/api`. - HTTP mit OkHttp, JSON mit kotlinx.serialization, normalisierte Fehler (`ApiException`). - JWT in **EncryptedSharedPreferences** (AndroidX Security Crypto), nicht im Klartext. - **Login** (`POST /auth/login`), **Logout** (`POST /auth/logout`), **Session-Wiederherstellung** (`GET /auth/me` beim App-Start). - Login-Oberfläche mit den bestehenden `Tc*`-Widgets; nach Anmeldung die Phase‑1-Demo-Shell mit echtem Benutzernamen und rollenbasierter Navigation (Admin-Zusatzmenü nur bei `role == 1`). - Debug-Build: Cleartext-HTTP erlaubt (`composeApp/src/debug/AndroidManifest.xml`) für lokales Testen. **Phase 3 (Kern-Zeiterfassung)** ist umgesetzt: - Echter aktueller Status über `GET /time-entries/current-state`. - Stempelaktionen über `POST /time-entries/clock`. - Laufender Eintrag über `GET /time-entries/running`. - StatusBox mit echten Zeiten und Aktionsbuttons. - Tages-/Wochenwerte über `GET /time-entries/stats/summary`. - Wochenübersicht über `GET /week-overview?weekOffset=...`. - Automatische Status-Aktualisierung alle 30 Sekunden nach Anmeldung. **Phase 4 (Buchungs-Workflows)** ist umgesetzt: - Zeitkorrekturen: Worklog-Einträge nach Datum, heutige Korrekturen, Erstellen und Löschen. - Urlaub: Liste, Erstellen und Löschen. - Krankheit: Krankheitstypen, Liste, Erstellen und Löschen. - Arbeitstage: Jahresstatistik. - Kalender: Monatsansicht mit Feiertag, Krankheit, Urlaub und Arbeitsstunden. ## API-URL setzen In `mobile-app/local.properties` (wird typischerweise nicht eingecheckt): ```properties # Beispiel: lokales Backend im Emulator (Host-Rechner) timeclock.api.baseUrl=http://10.0.2.2:3010/api ``` oder beim Gradle-Aufruf: ```bash # Beispiel: lokales Backend statt Standard-Server ./gradlew :composeApp:assembleDebug -Ptimeclock.api.baseUrl=http://10.0.2.2:3010/api ``` ## Scope (Phase 1) - Native Android-App unter `composeApp`. - Web-inspiriertes Designsystem an `frontend/src/assets/main.css`, `App.vue`, `SideMenu.vue` und `StatusBox.vue`. - Adaptive Shell: schmale Breiten mit Top-Bar und Bottom-Navigation, Tablet mit persistenter Seitennavigation. - Nicht umgesetzte Einstellungs-/Admin-Screens bleiben vorerst Demo/Mock; StatusBox, Wochenübersicht und Buchungs-Workflows verwenden echte Backend-Daten. ## Build Aus diesem Verzeichnis: ```bash ./gradlew :composeApp:assembleDebug ``` Beispiel mit eigenem Gradle-Cache: ```bash GRADLE_USER_HOME=/tmp/gradle-home ./gradlew :composeApp:assembleDebug --no-daemon ```