مواقيت – عادات ومهام
An app that provides you with the tools and resources to build healthy and positive habits in an efficient and easy way. You will get daily notifications to achieve your goals. Try the app now and embark on the journey of building a healthy and positive life.- A great way to build new habits.
- Many departments and diverse customs.
- Choose your favorite section and add habits easily.
- Daily notifications to remind you of morning and evening habits
This project follows the Clean Architecture structure and MVVM. The domain layer contains UseCases that encapsulate a single, specific task that is part of the application’s business logic. The data layer implements the repository interface defined in the domain layer, providing a single source of truth for data. The UI layer uses all the components and classes related to the Android framework to get the data from the ViewModel layer and display it on the UI.
- ui – This module uses all the components and classes related to the Android framework to display data from the ViewModel layer on the UI.
- data – This Kotlin module implements the repository interface defined in the domain layer, providing a single source of truth for data. It can only access the domain module.
- domain – This Kotlin module contains UseCases that encapsulate a single, specific task that is part of the application’s business logic. It cannot access any other module.
- local – This module handles data interaction with the local storage (Room DB).
- **presentation – This Android module uses MVVM with ViewModels exposing StateFlow that the UI consumes. The ViewModel does not know anything about its consumers. It can only access the domain module. (Note: this module is not included in this repo). I Included my viewmodel and it is mapper it is in the ui module.
Data and Dependenciy Flow:
This illustration from the clean architecture book shows the dependencies between the layers in a project and the way data flows between them.
Tech stack – Library:
- Coroutines – A coroutine is a concurrency design pattern that you can use on Android to simplify code that executes asynchronously
- Flow – Flow is used to pass (send) a stream of data that can be computed asynchronously
- Dagger-Hilt – for dependency injection.
- Kotlin-DSL – Used to handle gradle dependencies and config versions
- StateFlow – For reactive style programming (from VM to UI).
- Lifecycle – Used get lifecyle event of an activity or fragment and performs some action in response to change
- ViewModel – Stores UI-related data that isn’t destroyed on UI changes.
- Room – Used to create room db and store the data.
- Navigation – Used to navigate between fragments
- Data Binding – Used to bind UI components in your XML layouts.
- Material-Components – Material design components like ripple animation, cardView.
- Habits Screen
- Ktlint or Detekt
- Todo Screen
- Use Jetpack Compose
Find this repository useful?
Support it by joining stargazers for this repository.
If you’d like to contribute, please take a look at the PRs Welcome label on the issue tracker. For new features, please open an issue to discuss it before beginning implementation.