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 -
- Koin - Dependency Injection Framework (Kotlin).
- Retrofit - A type-safe HTTP client for Android and Java.
- Fragment
- Glide for image loading