A modern, cross-platform fitness tracking application built with Kotlin Multiplatform and Compose Multiplatform. Track your daily steps, set personalized goals, and monitor your fitness progress across Android and iOS devices.
Get StepsShare on your device today!
- Step Tracking: Real-time step counting with device sensors
- Goal Setting: Customizable daily goals for steps, calories, distance, and time
- Progress Monitoring: Visual progress indicators and achievement tracking
- Streak Tracking: Maintain motivation with daily streak counting
- Trending Charts: Beautiful data visualization for your fitness journey
- Activity Metrics: Comprehensive tracking of calories burned, distance covered, and active time
- Historical Data: View your progress over time with weekly and monthly views
- Personalized Calculations: Accurate metrics based on your profile (age, weight, height, gender)
- Modern UI: Material Design 3 with beautiful gradients and animations
- Onboarding Flow: Personalized setup experience for new users
- Cross-Platform: Seamless experience on both Android and iOS
- Offline First: All data stored locally on your device for privacy
- Local Storage: Your data never leaves your device
- No Cloud Sync: Complete privacy and data ownership
- Permission Control: Transparent permission requests for step counting
StepsShare follows clean architecture principles with a modern tech stack:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Presentation Layer β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β’ Compose UI Components β
β β’ ViewModels (MVVM Pattern) β
β β’ Navigation (Compose Navigation) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Domain Layer β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β’ Use Cases β
β β’ Domain Models β
β β’ Repository Interfaces β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Data Layer β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β’ Repository Implementations β
β β’ Local Data Sources (Room Database) β
β β’ Platform-Specific Implementations β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Platform Layer β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β’ Android Implementation β
β β’ iOS Implementation β
β β’ Shared Business Logic β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
- Kotlin Multiplatform: Cross-platform development
- Compose Multiplatform: Modern declarative UI framework
- Material Design 3: Beautiful, accessible design system
- Dependency Injection: Koin for clean architecture
- Database: Room for local data persistence
- Navigation: Compose Navigation for screen management
- Charts: Compose Charts for data visualization
- Settings: Multiplatform Settings for user preferences
- Serialization: Kotlinx Serialization for data handling
- Android: API 26+ (Android 8.0+)
- iOS: iOS 13.0+
- Architectures: ARM64, x86_64 (iOS Simulator)
- Android Studio Hedgehog or later
- Xcode 15.0 or later (for iOS development)
- Kotlin 1.9.0 or later
- JDK 11 or later
-
Clone the repository
git clone https://github.com/yourusername/StepsShare-oss.git cd StepsShare-oss
-
Open in Android Studio
- Open the project in Android Studio
- Sync Gradle files
- Build the project
-
Run on Android
- Connect an Android device or start an emulator
- Click "Run" in Android Studio
-
Run on iOS
- Open
iosApp/iosApp.xcodeproj
in Xcode - Select your target device or simulator
- Click "Run" in Xcode
- Open
We welcome contributions from the community! Here's how you can help:
- π Report Bugs: Open an issue with detailed bug reports
- π‘ Feature Requests: Suggest new features or improvements
- π Documentation: Help improve our docs and code comments
- π§ Code Contributions: Submit pull requests for bug fixes or features
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Make your changes and commit:
git commit -m 'Add amazing feature'
- Push to the branch:
git push origin feature/amazing-feature
- Open a Pull Request
- Follow Kotlin coding conventions
- Use meaningful variable and function names
- Add comments for complex logic
- Write unit tests for new features
If you find this project helpful, please give it a βοΈ!