An open API service indexing awesome lists of open source software.

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.

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.


Run Feature



Auth Feature


Phone Watch Mockup

## 🔍 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
![architecture](https://github.com/user-attachments/assets/09ca369a-968a-435e-bb89-f1856120bac5)

📦 Modular Diagram
![modular architecture](https://github.com/user-attachments/assets/29f555f6-2339-40dc-899c-79835b0c7fb7)

📲 UI Layer
![ui layer](https://github.com/user-attachments/assets/80d123e6-e72b-4ca8-998b-a9edec78ae19)

📡 Data Layer
![data layer](https://github.com/user-attachments/assets/0bdebc42-69a1-41a2-ad8f-d57d3cbf9124)

---

## 🧱 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:



Buy 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