Files
pamietnik/app/CLAUDE.md
Christoph K. 2985b3c76e Initial commit
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-05 20:15:47 +02:00

66 lines
1.9 KiB
Markdown

# CLAUDE.md — RALPH Android Frontend
## Stack
Language: Kotlin
UI: Jetpack Compose
DB: Room (SQLite)
Worker: WorkManager
Maps: MapLibre + OpenStreetMap
HTTP: Retrofit oder Ktor Client (TBD)
Auth: TBD (API-Key vs JWT für Upload)
---
## Kern-Features (Android)
1. Background GPS-Tracking (COARSE/FINE + Background permission)
2. Offline Queue (Room) + WorkManager Upload (Idempotenz via event_id)
3. Manuelle Punkte hinzufügen (lat/lon/timestamp/notiz + Validierung)
4. Kartenansicht (MapLibre, Tile-Quelle konfigurierbar)
5. Datei-Export (SAF ACTION_CREATE_DOCUMENT)
---
## Architektur-Prinzipien
- Offline-First: Jeder Punkt wird zuerst lokal in Room gespeichert
- Upload via WorkManager mit Constraint: Network connected + Retry/Backoff
- Idempotenz: Jeder Punkt erhält eine client-seitige event_id (UUID)
- source-Feld: "gps" | "manual" unterscheidet Punkt-Typ
- Validierung manueller Punkte: as the user types im ViewModel
---
## Offene Entscheidungen (TBD)
- HTTP Client: Retrofit vs Ktor
- timestamp Format: epochMillis vs RFC3339
- Android Upload Auth: X-API-Key vs JWT
- minSdk festlegen
---
## Nächste Tasks (Reihenfolge)
- [ ] T001 Compose-Projekt anlegen (Kotlin, minSdk festlegen)
- [ ] T001a Kotlin-Standards festlegen (Coroutines, KTX, Code Style)
- [ ] T004 Permissions Manifest + Runtime-Flow (COARSE/FINE + Background)
- [ ] T006 Background-Tracking Architektur (Foreground Service)
- [ ] T033 Room-Setup (Entities/DAOs/Migrations)
- [ ] T008 Upload-Queue (pending/sent/failed, retryCount)
- [ ] T012 Upload-Worker (WorkManager, Retry/Backoff)
- [ ] T080 UI: Manuellen Punkt hinzufügen
- [ ] T081 Eingabevalidierung Compose (as the user types)
- [ ] T018 Export via SAF
---
## Antwort-Stil
- Kotlin-Code immer mit Coroutines/Flow
- Compose-Code: State Hoisting, ViewModel pattern
- Kein direkter DB/Network-Zugriff in Composables
- Tests: JVM Unit Tests für Domain/Queue; Instrumentation für Room/Worker