Skip to content

Offline-first running tracker app created in Kotlin/Compose with multi-module architecture in mind. Showcases use of convention plugins to facilitate configuring multiple modules at once. Includes a dynamic feature example. Implements background syncs. (Room/Koin/Ktor/Compose)

Notifications You must be signed in to change notification settings

javglex/RunBuddyModular

Repository files navigation

RunBuddy (⚠️ under construction ⚠️)

Offline-first Android application for tracking runs (ktor/room/koin/multi-module/convention-plugins). Create accounts, track runs, and perform background syncs. Includes wearOS app for controlling workouts and sending heart rate data.

Getting Started

Clone this repository (main branch), build & run.

For auth key, please email me directly at [email protected]. Otherwise, you'll be able to download the app from the playstore shortly.

Introduction

This run tracking application demonstrates multi-module architecture to separate features and layers, each module configured via convention plugins to facilitate build config management. This enforces the data flow rule when communicating between layers (data/domain/presentation). One feature in particular (analytics screen) is separated into a dynamic feature, to showcase benefits of multi-module architecture.

Overview

Some of the main screens include:

Home Dark Home Light Tracking Run
Screenshot_20240624_220552 Screenshot_20240624_220254 Screenshot_20240624_222814
Intro Sign-In Light Sign-in Dark
Screenshot_20240624_220410 Screenshot_20240624_220443 Screenshot_20240624_220509
WearOS pre-workout WearOS in-workout
Screenshot_20240624_221608 Screenshot_20240624_221524

Main features:

  • Registration (currently offline, but ready for online support)
  • Authentication (currently offline, but ready for online support)
  • Starting a run
  • Tracking a run on google maps
  • Saving a run, it's metrics, and the tracked route.
  • Pausing a run mid-workout and having multiple routes
  • Workout analytics
  • Offline-first functionality
  • Foreground service for tracking runs while app is closed or in background.
  • WearOS heart-rate tracking
  • WearOS workout controls

Tech Stack (Dependencies)

  • ktor for network api requests
  • room for storing data locally
  • koin for dependency injection (and DI across modules)
  • compose for UI
  • kotlin coroutines for async programming

Highlight folders:

About

Offline-first running tracker app created in Kotlin/Compose with multi-module architecture in mind. Showcases use of convention plugins to facilitate configuring multiple modules at once. Includes a dynamic feature example. Implements background syncs. (Room/Koin/Ktor/Compose)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages