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

1.9 KiB

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