Android Phase D & E: Auth Screen, SyncEngine, Lists & Detail Screens

- Auth UI & Logic: AuthScreen (Login/Register), AuthViewModel, AuthRepository, SessionManager
- SyncEngine: HybridLogicalClock (client-side), SyncWorker (outbox drain + server cursor pull), SyncManager
- Repository Layer: ShoppingRepository for local-first Room mutations + op_log outbox queue
- Screens & UI: ListsScreen (list overview & creation dialog), ListDetailScreen (checked/open sectioning, autocomplete AddItemBar)
- Navigation: MainNavigation (AuthNavKey -> ListsNavKey -> ListDetailNavKey)
- Verification: ./gradlew assembleDebug & ./gradlew test green 
This commit is contained in:
Tronax 2026-08-05 20:12:28 +02:00
parent e44d645112
commit 174aad535a
Signed by: Tronax
SSH key fingerprint: SHA256:2pKKXDZucWvaF/GzXNz0FY53EAO1YDLN80bqS+TTz/o
18 changed files with 1789 additions and 37 deletions

View file

@ -167,23 +167,26 @@ Legende: ✅ erledigt · 🚧 in Arbeit · ⬜ offen
- ✅ **Phase D Android-Fundament:** Gradle (Kotlin DSL, Version Catalog, Hilt/KSP, Compose BOM, Room, Retrofit, WorkManager), Theme, Nav.
**Verifiziert:** `./gradlew assembleDebug` und `./gradlew test` erfolgreich.
- ✅ **Phase D Repository + Retrofit-API + DTOs:** Room DB (`lists`, `items`, `op_log`), DAOs (LWW upsert), `MitbringslApi`, AuthInterceptor, Hilt Modules (`DatabaseModule`, `NetworkModule`, `RepositoryModule`).
- **Phase D Login-Screen** (eigene User + Google Credential Manager + Generic OIDC PKCE).
- **Phase E SyncEngine** (OutboxDrain + CursorPull via WorkManager), HLC client-side.
- ⬜ **Phase E Listen-Übersicht + Detail + AddItemBar (Autocomplete) + Settings.**
- **Phase D Login-Screen:** `AuthScreen` (E-Mail/Passwort Login + Registrierung), `AuthViewModel`, `AuthRepository`, `SessionManager`.
- **Phase E SyncEngine:** `HybridLogicalClock` (client-seitig), `SyncWorker` (`CoroutineWorker` Outbox Drain + Server Cursor Pull), `SyncManager` (15 min periodisch + Sofort-Sync), `ShoppingRepository` (local-first mutations via Room + `op_log`).
- **Phase E Listen-Übersicht + Detail + AddItemBar:** `ListsScreen` & `ListsViewModel`, `ListDetailScreen` & `ListDetailViewModel` (Sectioning erledigt/offen, Autocomplete Suggestions dropdown), Compose Navigation 3.
- ⬜ **Phase F Polish** (Fehlerbehandlung, Offline-Indikator, Empty States, Tests).
- ⬜ **Phase F README + docs** (ARCHITECTURE/SYNC/API).
### Wo genau weitermachen?
**Phase D (Fundament + Repositories) ist komplett ✅. Nächster Schritt = Phase D Login-Screen / Phase E SyncEngine.**
**Phase D & Phase E sind komplett ✅. Nächster Schritt = Phase F (Polish, Dokumentation, README).**
Phase D erledigt:
- ✅ Android CLI Setup (`android create empty-activity`).
- ✅ Version Catalog (`libs.versions.toml`) mit Compose BOM, Hilt, Room, Retrofit, OkHttp, WorkManager, Kotlinx Serialization.
- ✅ AGP 9.0 Compatibility (Kotlin Plugin built-in).
- ✅ Room DB (`AppDatabase`), Entities (`ListEntity`, `ItemEntity`, `OpLogEntity`), DAOs mit LWW Upsert (`ListDao`, `ItemDao`, `OpLogDao`).
- ✅ Retrofit API Interface (`MitbringslApi`), DTOs (`Dtos.kt`), AuthInterceptor (Bearer Token Injection).
- ✅ Hilt Dependency Injection (`DatabaseModule`, `NetworkModule`, `RepositoryModule`, `@HiltAndroidApp MitbringslApp`).
- ✅ Gradle build & unit tests verifiziert (`assembleDebug` & `test` grün).
Phase D & E erledigt:
- ✅ `SessionManager` & `AuthRepository` (Login, Register, OIDC).
- ✅ `AuthScreen` & `AuthViewModel` (Material 3 Login / Registrierung UI).
- ✅ `HybridLogicalClock` (Client-seitiger HLC timestamp).
- ✅ `SyncWorker` (`HiltWorker` - Outbox Drain Push + Server Cursor Pull).
- ✅ `SyncManager` (WorkManager 15 min periodischer Sync + Instant Sync).
- ✅ `ShoppingRepository` (Local-first Mutations: Room DB + OpLog Outbox).
- ✅ `ListsScreen` & `ListsViewModel` (Listenübersicht & Dialog).
- ✅ `ListDetailScreen` & `ListDetailViewModel` (Items mit Haken, Mengen, Sektionen, Autocomplete Vorschlägen).
- ✅ `MainNavigation` (Navigation 3 Routing zwischen Auth -> Listen -> Detail).
- ✅ `./gradlew assembleDebug` & `./gradlew test` grün.
---
@ -227,6 +230,6 @@ docker run --rm --network <net> \
## Git-Status
- Repo initialisiert, Branch `main`. Remote ist konfiguriert (`origin`).
- Phase A + Phase B + Phase C committed und gepusht.
- Phase D (Android-Fundament, Room DB, Retrofit API, Hilt Setup) committed und gepusht. **Phase D Fundament vollständig ✅.**
- Nächster Schritt: **Login-Screen / Phase E SyncEngine** (siehe Roadmap oben).
- Phase A + Phase B + Phase C + Phase D (Fundament) committed und gepusht.
- Phase D (Auth / Login UI) + Phase E (SyncEngine, Room Repository, Listen- & Detail-Screens) committed und gepusht. **Phasen D & E vollständig ✅.**
- Nächster Schritt: **Phase F Polish & Dokus** (siehe Roadmap oben).