Take control of your fitness journey with Strive β a modern Android application that helps you reach your goals, step by step.
Features β’ Screenshots β’ Tech Stack β’ Getting Started β’ Architecture β’ License
Strive is a comprehensive fitness tracking application built with modern Android development practices. Whether you're hitting the gym or going for a run, Strive helps you plan, track, and analyze your workouts with an intuitive interface and powerful features.
Built entirely with Kotlin and Jetpack Compose, Strive demonstrates clean architecture, modern UI design, and seamless integration with Google services.
|
|
|
|
|
|
Exercise Library |
Workout Templates |
GPS Tracking |
Activity History |
- ποΈ Clean Architecture - Separation of concerns across layers
- π― MVVM Pattern - Reactive UI with ViewModel and StateFlow
- π Dependency Injection - Dagger Hilt for modular dependencies
- π Reactive Programming - Kotlin Flow for reactive data streams
| Category | Technology |
|---|---|
| π¨ UI | Jetpack Compose, Material 3, Coil (image loading) |
| πΎ Database | Room (SQLite ORM with Flow support) |
| π Network | Retrofit, OkHttp, Kotlinx Serialization |
| πΊοΈ Maps | Google Maps SDK, Location Services |
| π DI | Dagger Hilt |
| πΏ Preferences | DataStore |
| π Security | R8 Code Shrinking & Obfuscation |
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β UI Layer β
β Jetpack Compose + ViewModels β
β (Screens, Components) β
βββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β StateFlow/Events
βββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ
β Domain Layer β
β Use Cases + Repository Interfaces β
β (Business Logic) β
βββββββββββββββββββββ¬ββββββββββββββββββββββββββββββββββ
β Models
βββββββββββββββββββββΌββββββββββββββββββββββββββββββββββ
β Data Layer β
β Room Database + Retrofit API + Mappers β
β (Local & Remote Data Sources) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Before you begin, ensure you have the following installed:
- β Android Studio Hedgehog (2023.1.1) or later
- β JDK 11 or higher
- β Android SDK 28+ (Android 9.0 Pie)
- β Google Play Services (for Maps & Location)
-
Clone the repository
git clone https://github.com/yourusername/strive.git cd strive -
Open in Android Studio
- Launch Android Studio
- Select "Open an Existing Project"
- Navigate to the cloned directory
-
Configure API Keys
Create a
local.propertiesfile in the project root (if it doesn't exist) and add:# Google Maps API Key (Required for Run screen) MAPS_API_KEY=your_google_maps_api_key_here # ExerciseDB API Key (Optional - app works offline without it) RAPIDAPI_KEY=your_rapidapi_key_here
π‘ Getting API Keys:
- Google Maps: Get API Key - Enable "Maps SDK for Android"
- ExerciseDB: RapidAPI - Free tier available
-
Sync & Build
File β Sync Project with Gradle Files -
Run the app π
- Connect an Android device or start an emulator
- Click the "Run" button or press
Shift + F10
- The app will automatically seed the exercise database on first launch
- No account or login required
- All data is stored locally on your device
- Navigate to Workout tab
- Tap "Create Template"
- Add exercises from the library
- Configure sets, reps, and rest times
- Save and start your workout!
- Navigate to Run tab
- Select activity type (Running, Cycling, Walking)
- Grant location permissions when prompted
- Tap "Start" and begin your activity
- View real-time stats and route on the map
Strive follows Clean Architecture principles with clear separation between layers:
π¦ app
β£ π core β Cross-cutting concerns (DI, Utils, Location)
β£ π data β Data sources (Room, Retrofit, Repositories)
β£ π domain β Business logic (Models, Use Cases)
β π ui β Presentation (Compose Screens, ViewModels)
- β Single Responsibility - Each class has one job
- β Dependency Inversion - Depend on abstractions, not concretions
- β Separation of Concerns - UI, Business Logic, and Data are independent
- β Testability - All components are easily testable
- π No User Accounts - All data stored locally
- π« No Data Collection - Your fitness data stays on your device
- π API Key Protection - Keys stored securely in build configuration
- π‘οΈ R8 Obfuscation - Code protected against reverse engineering
- π HTTPS Only - All network communication is encrypted
This project was created as an academic assignment. While it's not actively seeking contributions, feel free to:
- π Report bugs by opening an issue
- π‘ Suggest features or improvements
- π΄ Fork the project for your own experiments
It's still under development and may evolve over time.
If you want to contribute or experiment:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- β Commercial use - You can use this code in commercial projects
- β Modification - You can modify the code
- β Distribution - You can distribute the code
- β Private use - You can use the code privately
β οΈ Liability - The software is provided "as is"β οΈ Warranty - No warranty is provided
If you use this project, attribution is appreciated but not required:
Strive - Fitness Tracking App
Original Author: Carl Lundholm
GitHub: https://github.com/Carlsmeister/strive
Carl Lundholm
π UmeΓ₯ University | 5DV209 - Mobile Application Development
π
Academic Year Summer 2025
Special thanks to:
- ποΈ ExerciseDB - Comprehensive exercise database
- πΊοΈ Google Maps Platform - Maps and location services
- π¨ Material Design - Design system and guidelines
- π€ Android Open Source Project - Android framework
- π£ Kotlin - Modern programming language
- π UmeΓ₯ University - Course instruction and guidance
If you encounter any issues or have questions:
- π Search existing issues
- π¬ Open a new issue
Future improvements planned:
- βοΈ Light theme support
- π Advanced statistics and charts
- π Achievement system
- π€ Workout sharing with friends
- β Android Wear integration
- π± Widget support
- π Multi-language support
- βοΈ Optional cloud backup
If you found this project helpful or interesting, please consider:
- β Starring the repository
- π΄ Forking for your own experiments
- π’ Sharing with others



