Initial commit
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
65
app/CLAUDE.md
Normal file
65
app/CLAUDE.md
Normal file
@@ -0,0 +1,65 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user