Smart Run (Smart Run Coach) is a cross-platform fitness application for Android and iOS designed to make outdoor running safer, smarter, and more adaptive.
The app combines real-time GPS tracking, performance metrics, and AI-assisted insights to help runners monitor distance, time, pace, speed, and calories burned during a run. Beyond basic tracking, Smart Run integrates Google Gemini AI as a virtual running coach, analyzing performance in real time to help prevent overexertion and encourage sustainable running habits.
Every year, millions of people decide to start running — motivated by fitness goals, New Year resolutions, or the desire for a healthier lifestyle. While motivation is powerful, it often comes without guidance.
Many runners push themselves too hard, ignore early signs of fatigue, or lack awareness of their physical limits, especially during outdoor runs. Most running apps focus on recording distance and time after the fact, but they rarely help runners understand how their body is responding during the run itself. This gap can lead to overexertion, poor recovery habits, and in extreme cases, serious health risks caused by pushing beyond safe limits.
Smart Run was built to explore a different approach: a running experience that doesn’t just track movement, but actively analyzes effort in real time. By combining live GPS data, performance metrics, and AI-powered analysis, Smart Run acts as a virtual running coach — helping runners pace themselves, recognize when to rest, and build safer, more sustainable running habits.
The long-term vision of Smart Run is to evolve beyond software-only insights by integrating with physical health sensors, such as heart-rate monitoring devices, to provide even deeper, real-time understanding of a runner’s condition and wellbeing.
main.2.mp4
*📌 Demo note: This app relies on real GPS and device sensors. The demo was recorded on an emulator and does not reflect accurate distance, pace, or calorie tracking.
For the full experience, run Smart Run on a physical device.
⚠️ Use Physical Device for Better Experience
To build for iOS/Android, use a macOS device with Android Studio, Xcode, JDK, and the KMP & Kotlin plugins installed—follow this setup guide first.
Create a new Gemini API Key here. A default model is already selected.
Go to the Google Cloud Console, create a project, and enable the Maps SDK for Android and Maps SDK for iOS. Create your API key under the Credentials section.
Create a local.properties file in the root directory of the project and add your keys as follows:
geminiApiKey=your-gemini-api-key
googleMapAPiKey=your-google-maps-api-key
- Start, pause, resume, and stop running sessions
- Real-time distance and duration tracking
- Current and average speed calculation
- Current and average pace (min/km)
- Background tracking for uninterrupted runs
- Live route tracking on native maps
- Real-time polyline drawing of running routes
- Color-coded route segments for pauses and resumes
- Start, current location, and finish markers
- Auto-follow camera during active runs
- Real-time calorie burn estimation
- MET-based calorie calculation
- Session summary after each run
- Clear visual display of key metrics during runs
- AI-assisted analysis of running performance
- Pace and rest suggestions during long or intense runs
- Detection of fatigue trends based on run data
- Post-run insights to help improve future sessions
| Library | Purpose |
|---|---|
| Kotlin Multiplatform | Core technology for sharing business logic across platforms. |
| Compose Multiplatform | Shared UI framework for building Android and iOS interfaces. |
| Gemini SDK | KMP wrapper for integrating Google’s Generative AI. |
| Koin | Pragmatic lightweight dependency injection for KMP. |
| Room / SQLite | Local database and low-level storage with multiplatform support. |
| Kotlinx Serialization | Type-safe JSON parsing and data serialization. |
| Kotlinx DateTime | Multiplatform library for date and time manipulation. |
| DataStore | Modern data storage solution for simple key-value pairs. |
| Napier | Logger library for KMP (Android, iOS, JVM, JS). |
| BuildKonfig | Injects local.properties secrets into shared code safely. |
| Moko Permissions | Multiplatform permission handling for notification, location, etc. |
| KMP Maps | Native implementation for Google Maps on Android and MapKit for iOS. |
| CMP Toast | Simple library for showing Toast notifications in Compose. |
This project is licensed under the MIT License.
