madar soft task using room clean clean architecture and dependency injection framework using dagger-hilt and coroutines for managing threads and navigation component . and make unit test of search use case and mocking the room
I choose to use MVVM (Model-View-ViewModel) as my project architecture in order to provide a cleaner code, with clear separation between the view, the data and the business logic. The following diagram shows all the modules and how each module interact with one another after. This architecture using a layered software architecture.
- Kotlin - official programming language for Android development .
- Coroutines - for asynchronous programming .
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
- LiveData - Data objects that notify views when the underlying database changes.
- ViewModel - Stores UI-related data that isn't destroyed on UI changes.
- Room - Access your app's SQLite database with in-app objects and compile-time checks.
- Navigation -
- dagger-hilt - Dependency Injection Framework (Kotlin).
- Fragment
- [unit testing]