The application prioritizes signal integrity, uninterrupted tracking, and minimal UI noise. Complex telemetry is reduced into a clean, high-contrast interface designed for outdoor visibility and immediate readability.
- RunTrail is a precision-focused GPS running tracker engineered for reliability under real-world constraints.
- It records routes, pace, distance, and elevation while maintaining consistent background execution even under aggressive system limitations.
- Continuous GPS route recording with live polyline rendering
- Real-time pace, distance, and elapsed time calculation
- Elevation-aware tracking (device dependent)
- Foreground service resistant to background termination
- Mid-run persistence to prevent data loss on crashes
- GPS signal filtering to reduce drift and spikes
- Persistent run history with detailed summaries
- Aggregated metrics across sessions
- Map-based replay of recorded routes
- Minimalist, distraction-free interface
- High-contrast design optimized for outdoor usage
- Large typography for real-time metrics
- Location smoothing via filtering logic
- Audio coaching via Text-to-Speech (distance milestones)
- Custom Canvas charts for weekly distance visualization
- Language: Kotlin
- UI: Jetpack Compose
- Architecture: Clean Architecture + MVVM
- Local Storage: Room Database
- Async: Coroutines + Flow
- State Management: StateFlow
- Location: FusedLocationProviderClient
- Maps: Google Maps SDK
- Background Execution: Foreground Service + NotificationManager
- Hilt
| Home | History | StartRun |
|---|---|---|
![]() |
![]() |
![]() |
RunTrail follows strict separation of concerns using Clean Architecture mapped to MVVM.
FusedLocationProviderClient
↓
Repository (Flow)
↓
UseCases (Domain Layer)
↓
ViewModel (StateFlow)
↓
Jetpack Compose UI
Presentation
- Compose UI
- ViewModels
- Reactive state via StateFlow
Domain
- Business logic (UseCases)
- Pure Kotlin, no framework dependencies
Data
- Repository implementations
- Room database
- Location data sources
- Batched database inserts during active tracking
- Controlled recomposition in Compose
- Efficient polyline rendering for large datasets
- Fully offline architecture
- No external APIs or data transmission
- Location permissions handled with explicit user consent


