ProBase is a modular Android repository designed to showcase scalable architecture, modern Android development practices, and professional-grade application structures. It serves as a foundation for multiple applications, primarily focusing on AshBike, a comprehensive cycling companion app.
The flagship application of this repository. AshBike is a multi-device cycling computer and tracker.
-
App Modules:
-
applications/ashbike/apps/mobile: The primary Android mobile application. -
applications/ashbike/apps/wear: A companion app for Wear OS devices. -
Key Features:
-
Ride Tracking: Real-time GPS tracking, speed, distance, and elevation monitoring.
-
Sensor Integration: Support for Bluetooth LE (BLE) Heart Rate monitors, Speed, and Cadence sensors.
-
Health Connect: Seamless integration with Android Health Connect to sync exercise sessions and biometric data.
-
Smart Glass UI: Dedicated UI modules for heads-up displays (likely for smart glasses).
-
Weather Intelligence: Real-time weather updates and forecasts integrated into the ride dashboard.
-
Interactive Maps: Integration with mapping services for route visualization.
A secondary application focused on photography and task management (implied by the name and structure).
applications/photodo/apps/mobile
This project follows a strict Clean Architecture approach within a Modular Monorepo structure.
-
applications/: Contains the executable app modules (Mobile, Wear). These modules knit together various features. -
features/: Standalone, feature-specific modules. This separation allows for faster build times and better separation of concerns. -
ble: Bluetooth Low Energy management. -
health: Health Connect interactions and data management. -
ml: Machine Learning implementations. -
nfc: Near Field Communication capabilities. -
places: Location and place discovery (likely utilizing Maps/Yelp APIs). -
qrscanner: QR code scanning functionality. -
weather: Weather data fetching and UI components. -
nav3: Exploration of modern Navigation Compose patterns. -
core/: Shared foundation modules used across features and apps. -
core:model: Shared domain models and data classes. -
core:data: Repositories and data sources. -
core:database: Local persistence (Room). -
core:network: API clients (Retrofit/Apollo). -
core:ui: Common UI components, themes, and design system elements. -
core:util: Utility functions and logging. -
build-logic/: Custom Gradle Convention Plugins to standardize build configurations across all modules (e.g., Kotlin options, Compose setup, Hilt configuration).
-
Language: Kotlin (100%)
-
UI Toolkit: Jetpack Compose (Material 3)
-
Asynchronous Programming: Coroutines & Flow
-
Dependency Injection: Hilt
-
Database: Room
-
Networking:
-
Apollo Kotlin (GraphQL)
-
Platform Integrations:
-
Bluetooth Low Energy (BLE)
-
NFC
-
Wear OS Services
-
Build System: Gradle with Version Catalogs (
libs.versions.toml)
- Clone the repository:
git clone https://github.com/your-username/probase.git
cd probase
- Open in Android Studio: Open the project root directory in the latest version of Android Studio (Koala or later recommended).
- Sync Gradle: Allow Gradle to sync and download dependencies.
- Run AshBike:
- Select the
applications.ashbike.apps.mobilerun configuration to deploy to a phone/emulator. - Select
applications.ashbike.apps.wearto deploy to a Wear OS emulator.
This project uses modularization to enable isolated development. You can work on individual feature modules (e.g., :features:weather) largely independently of the main application modules.
Code Style:
- The project enforces code style using
spotlessor similar configured within thebuild-logic. - Compose UI code generally follows the state hoisting pattern.