Route import and navigation
GPX import, review, route following, GPS status, and workout recording operate as one product flow instead of isolated features.
Case study | Android + Wear OS
A local-first trail workout app for importing GPX routes, syncing them to a watch, recording route-following workouts, and exporting clean GPX and FIT files.
Evidence snapshot
The visible proof is the phone route workflow, but the real product boundary is the full loop: import, review, sync, record, recover, and export.
Problem
Trail workouts cross fragile boundaries: imported route files, phone-to-watch sync, GPS quality, workout state, and exports that need to remain useful after the activity. TrailScope treats them as one local-first loop centered on an Android phone and paired Wear OS watch, without assuming a hosted account.
System
GPX import, review, route following, GPS status, and workout recording operate as one product flow instead of isolated features.
Shared Kotlin modules keep route and workout state consistent between phone and watch-specific, wrist-first surfaces.
Recovery flows and clean GPX/FIT exports preserve user data when GPS, sync, or device state gets messy.
Health Connect, widgets, Wear Tiles, and release evidence make the product easier to test, explain, and ship responsibly.
Decisions
Routes, workouts, and exports remain user-owned local state while still supporting phone and watch handoff.
Recovery is part of the normal route workflow because GPS, app lifecycle, and device connection state can change outdoors.
GPX and FIT output must remain useful beyond the app, making export quality a product requirement rather than cleanup.
Public proof stays at the product-decision level and excludes source, real route data, precise locations, logs, accounts, and release secrets.
Outcome
TrailScope shows ownership of a cross-device route lifecycle, not a collection of screens. GPX import, watch handoff, workout recording and recovery, and GPX/FIT export remain one user-owned flow across Android and Wear OS.