Data is local first
The app foundation uses Kotlin, Jetpack Compose and a local Room database. Trips, findings, custom fields and photos do not depend on a server connection, so the primary workflow remains available without a network.
Finding types can be created and pinned for quick access. When a type requires a photo, the finding is saved before the camera opens, so cancelling the photo does not discard the recorded data.
GPS reliability came before visual polish
Before the full map was connected, a dedicated GPS prototype tested the foreground service, pause and resume, accuracy spike filtering and restoration of an active trip after Android stopped the process.
Its diagnostic report includes duration, distance, accepted and rejected point counts, accuracy profile, battery use and process recovery count. Coordinates remain in the local database and are never included in that report.
