Lifting will be a tracking and logging-based app for workouts. This repository is currently under development and will soon be released as V2. The information below applies to V1
Lifting, helps users have a training program, track their progress with graphic analysis, and use a variety of measurement tools.
It's written using 100% Kotlin and Jetpack Compose. It's developed to help you track your personal progress with ease.
- Common -> It contains certain components that are useful and stable for the application, independent of other layers.
- Navigation -> The screens present in the application and the navigation and state information triggered by user interaction are kept in this layer.
- DI -> It is a separated layer in the application that aims to eliminate external dependencies and automate these dependencies. The dependencies of all layers are executed through this layer.
- Notification -> Business logic related to setting alarms and sending notifications in the application is kept in this layer.
- Feature -> Each feature in the application creates its own layers for independence, testability and a modular approach.
- Data -> Here, models are available for the local database, parsers, and data from the remote source.
- Domain -> The domain layer of the application includes the fundamental and independent components such as the main logic, business rules, and data models. This layer does not communicate with other layers and remains independent from external dependencies.
- Presentation -> It is the layer to interact with the user. This layer receives user inputs, triggers related actions and displays the results.
-
100% Jetpack Compose based.
-
Kotlin Coroutines -> structured concurrency
-
Kotlin Flow -> reactive datastream
-
Kotlin Parcelize -> data sharing between screens
-
Jetpack Libraries
- ViewModel -> Business Logic, UI related data holder and lifecycle aware.
- Navigation -> Navigate between screens.
- Compose -> UI
- Room -> Local Database
- Dagger-Hilt -> Dependency Injection
- DataStore -> Store relatively smaller data asynchronously, consistently and transactionally.
- Media3 -> Play video
-
Coil -> fetches and displays network images.
-
Retrofit & OkHttp3 -> Networking
-
Splash API -> Launch screen
-
In-App Update -> managing app update
-
Google Sign-In - OneTap -> authentication using google
-
Chart -> data visualization
-
- Authentication
- Firestore -> NoSQL cloud database
- Storage -> storing photos or videos
- Remote Config -> cloud service that lets you change the behavior and appearance without update.
- Crashlytics -> real-time crash reporting.