A minimalist Android app for runners to convert between pace, time, and speed.
- Pace → Time — Given a pace (min/km) and distance, calculate total race time
- Time → Pace — Given a finish time and distance, calculate required pace
- Speed → Pace — Convert km/h to min/km pace
- Pace → Speed — Convert min/km pace to km/h
Preset distances included: 5K, 10K, Half Marathon, Full Marathon.
Results update instantly as you type — no Calculate button needed.
Coming soon
| Layer | Technology |
|---|---|
| UI | Jetpack Compose + Material3 |
| Architecture | Clean Architecture (Domain / Presentation) |
| State | ViewModel + StateFlow |
| Dependency Injection | Hilt |
| Language | Kotlin 2.0 |
| Min SDK | Android 8.0 (API 26) |
app/src/main/java/com/tuapp/timepace/
├── domain/
│ ├── model/ # Pace, TimeResult, Distance (pure Kotlin)
│ └── usecase/ # PaceToTime, TimeToPace, SpeedToPace, PaceToSpeed
├── presentation/
│ ├── viewmodel/ # ConverterViewModel + ConverterUiState
│ └── ui/
│ ├── components/ # ModeSelector, PaceInput, TimeInput, DistanceInput...
│ ├── screen/ # ConverterScreen
│ └── theme/ # Black & white minimalist theme
└── di/ # Hilt AppModule
- Clone the repo
git clone https://github.com/YOUR_USERNAME/timepace.git
- Open in Android Studio (Hedgehog or newer)
- Make sure you have JDK 17 configured under
File → Settings → Gradle JDK - Run on an emulator or physical device (API 26+)
./gradlew test47 unit tests covering domain models, use cases, and ViewModel logic. All tests run on JVM — no emulator required.
MIT License — feel free to use, modify and distribute.