https://github.com/shubhanshu24510/runique
Runique is a multi-module, offline-first running tracker app that monitors your health, tracks your runs with real-time location, and supports both Android mobile and Wear OS platforms.
https://github.com/shubhanshu24510/runique
android-jetpack authentication google-maps health-services koin-android kotlin ktor mongodb-database offline-first running-tracker wear-os
Last synced: about 1 year ago
JSON representation
Runique is a multi-module, offline-first running tracker app that monitors your health, tracks your runs with real-time location, and supports both Android mobile and Wear OS platforms.
- Host: GitHub
- URL: https://github.com/shubhanshu24510/runique
- Owner: shubhanshu24510
- Created: 2024-05-23T06:55:43.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-05-13T09:21:21.000Z (about 1 year ago)
- Last Synced: 2025-05-13T10:32:37.597Z (about 1 year ago)
- Topics: android-jetpack, authentication, google-maps, health-services, koin-android, kotlin, ktor, mongodb-database, offline-first, running-tracker, wear-os
- Language: Kotlin
- Homepage:
- Size: 796 KB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
Awesome Lists containing this project
README
🏃♂️ Runique - Running Tracker App
Runique is a multi-module, offline-first running tracker app that monitors your health, tracks your runs with real-time location, and supports both Android mobile and Wear OS platforms.
## 🔍 Preview
https://github.com/shubhanshu24510/Runiquee/assets/100926922/b0268e64-c22d-4db4-ae6c-1cfc077e7798
---
## ✨ Features
- 🔁 **Real-time Run Tracking**: Track your runs using Google Maps and draw running paths using google map drawlines.
- 📊 **Health Metrics**: View data such as Distance, Heart Rate, Pace, Speed, Elevation, and more.
- 📷 **Map Snapshots**: Capture and display run paths with data on the overview screen.
- 📶 **Offline-First**: All data is stored locally using Room DB and syncs with the server when online.
- ⌚ **Wear OS Support**: Real-time tracking and display optimized for Wear OS smartwatches.
---
## 🧩 Key Highlights
- Multi-module, clean MVI architecture
- OAuth authentication with token refresh
- Offline-first with Room Database
- Dynamic Feature Modules for modular builds
- Remote APIs, local databases & caching strategies
- Health & Fitness tracking using Google Health SDK
- Location tracking with the Google Maps SDK
- Full support for Wear OS devices
- Gradle Version Catalogs & Convention Plugins
- Implement watch to phone communication and what it takes to correctly sync exercise data
## 🛠️ Tech Stack
### Language & Concurrency
- **Kotlin**
- **Kotlin Coroutines + Flow**
### Jetpack Libraries
- Jetpack Compose (UI)
- Material3 Design System
- ViewModel
- Room Database
- Navigation (with Hilt support)
- Lifecycle-aware components
- DataStore (preferences)
- SplashScreen API
### Dependency Injection
- Hilt
- Koin (selective modules)
### Networking
- Ktor
- Kotlinx Serialization
### Database
- Room
- MongoDB (NoSQL)
### Image Loading & Logging
- Coil
- Timber
---
## 🧱 Architecture
Runique follows **MVI (Model-View-Intent)** with a **Repository Pattern**, and aligns with [Google's recommended app architecture](https://developer.android.com/topic/architecture).
### Layers:
#### UI Layer
- Compose UI
- ViewModels for state & event management
- Observes state via Kotlin Flows
#### Data Layer
- Repositories manage local/remote data sources
- Room DB & Network API abstraction
- Offline-first strategy
📐 Architecture Diagram

📦 Modular Diagram

📲 UI Layer

📡 Data Layer

---
## 🧱 Modularization Strategy
- 🔁 **Reusability**: Share logic across features
- 🏗 **Parallel Builds**: Improve build times
- 🚧 **Isolation**: Reduce tight coupling between modules
- 👥 **Team Focus**: Developers can work independently on dedicated modules
👉 Learn more: [Android App Modularization Guide](https://developer.android.com/topic/modularization)
---
## 🧰 Additional Tools & Libraries
- [Kotlinx Serialization](https://github.com/Kotlin/kotlinx.serialization)
- [KSP (Kotlin Symbol Processing)](https://github.com/google/ksp)
- Compose Compiler Plugin
- Google Health Services
- Google Maps SDK
- Dynamic Feature Delivery
---
---
## How do you run the project?
In order to run the project on your phone, you'll need to first clone it and then add two API keys for:
1. ... the Runique API (access granted after course purchase)
2. ... Google Maps (needs to be got from Google Cloud Console - instructions in the course)
Then simply include them in `local.properties`:
```
API_KEY=
MAPS_API_KEY=
```
Afterwards, build the project and you're ready to use it.
---
## 🤝 Support
If you like this project, please consider ⭐ starring the repo and following me for more cool Android projects!
☕ You can also support my work by buying me a coffee:
---
## 📄 License
```text
Designed and developed by Shubhanshu Singh (2025)
Licensed under the Apache License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0