Android Phase D: Project foundation, Room DB, Retrofit API, Hilt
- Android CLI Setup: initialized empty-activity app (AGP 9.0, Kotlin 2.3.20)
- Version catalog: Compose BOM 2026.03.01, Material 3, Hilt 2.60.1, Room 2.7.2,
Retrofit 2.11.0, OkHttp 4.12.0, WorkManager 2.10.2, Kotlinx Serialization
- Room Database (v1): ListEntity, ItemEntity, OpLogEntity
- Room DAOs: ListDao, ItemDao, OpLogDao with LWW upsert queries
- Network layer: MitbringslApi Retrofit interface + DTOs + AuthInterceptor
- Dependency Injection: DatabaseModule, NetworkModule, RepositoryModule, HiltAndroidApp
- Build verification: assembleDebug & test green ✅
This commit is contained in:
parent
895725b5e5
commit
e44d645112
57 changed files with 2090 additions and 26 deletions
41
AGENTS.md
41
AGENTS.md
|
|
@ -164,9 +164,9 @@ Legende: ✅ erledigt · 🚧 in Arbeit · ⬜ offen
|
|||
`upsertItemName` in Projektion (innerhalb Push-Transaktion).
|
||||
- ✅ **Phase C – Caddy:** `Caddyfile.behind-proxy` (auto_https off, trusted_proxies),
|
||||
`CADDY_HTTP_PORT`/`CADDY_HTTPS_PORT` in docker-compose.
|
||||
- ⬜ **Phase D – Android-Fundament:** Gradle (Kotlin DSL, Version Catalog, Hilt/KSP, Compose BOM),
|
||||
Theme, Nav, Room.
|
||||
- ⬜ **Phase D – Repository + Retrofit-API + DTOs.**
|
||||
- ✅ **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.**
|
||||
|
|
@ -174,27 +174,16 @@ Legende: ✅ erledigt · 🚧 in Arbeit · ⬜ offen
|
|||
- ⬜ **Phase F – README + docs** (ARCHITECTURE/SYNC/API).
|
||||
|
||||
### Wo genau weitermachen?
|
||||
**Phase C ist komplett ✅. Nächster Schritt = Phase D (Android-Fundament).**
|
||||
**Phase D (Fundament + Repositories) ist komplett ✅. Nächster Schritt = Phase D Login-Screen / Phase E SyncEngine.**
|
||||
|
||||
Phase C erledigt:
|
||||
- ✅ `internal/sync/hlc.go` – HLC (wall_ms<<16|counter, Tick/Now/After, global mutex).
|
||||
- ✅ `internal/store/opstore.go` – AppendOps idempotent (ON CONFLICT DO NOTHING), LWW-Projektion
|
||||
(list_create/rename/delete, item_add/update/remove), PullOps (cursor, 500er Pages).
|
||||
- ✅ `internal/store/liststore.go` – CreateList / GetLists / GetList (owner-check MVP).
|
||||
- ✅ `internal/store/itemstore.go` – GetItems (nicht-gelöschte Items einer Liste).
|
||||
- ✅ `internal/store/suggeststore.go` – Search (pg_trgm fuzzy, LIKE-fallback, 10 Ergebnisse).
|
||||
- ✅ `internal/httpapi/lists.go` – GET/POST /api/lists, GET /api/lists/{id} + Items.
|
||||
- ✅ `internal/httpapi/ops.go` – POST /api/lists/{id}/ops (Push), GET /api/lists/{id}/ops (Pull).
|
||||
- ✅ `internal/httpapi/suggest.go` – GET /api/suggestions?q=.
|
||||
- ✅ `internal/httpapi/api.go` – alle Routen verdrahtet.
|
||||
- ✅ `deploy/Caddyfile.behind-proxy` – auto_https off + trusted_proxies.
|
||||
- ✅ `deploy/docker-compose.yml` – CADDY_HTTP_PORT / CADDY_HTTPS_PORT.
|
||||
|
||||
Phase D – Android-Fundament (offen):
|
||||
1. Gradle-Setup: Kotlin DSL + `libs.versions.toml`, Hilt/KSP, Compose BOM, Room, Retrofit.
|
||||
2. Theme (Material 3) + Navigation (Compose Nav).
|
||||
3. Room-Datenbankschema (Listen/Items/OpLog/Outbox).
|
||||
4. Retrofit-API + DTOs passend zu den Backend-Endpoints.
|
||||
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).
|
||||
|
||||
---
|
||||
|
||||
|
|
@ -238,6 +227,6 @@ docker run --rm --network <net> \
|
|||
|
||||
## Git-Status
|
||||
- Repo initialisiert, Branch `main`. Remote ist konfiguriert (`origin`).
|
||||
- Phase A + Phase B (vollständig) committed und gepusht.
|
||||
- Phase C (Sync-Kern + Caddy behind-proxy) committed und gepusht. **Phase C vollständig ✅.**
|
||||
- Nächster Schritt: **Phase D – Android-Fundament** (siehe Roadmap oben).
|
||||
- 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).
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue