The main purpose of the application is to showcase the recent architecture best practices
- Retrofit a REST Client for Android.
- Hilt for dependency injection.
- ViewModel to store and manage UI-related data in a lifecycle conscious way.
- LiveData to handle data in a lifecycle-aware fashion.
- Navigation Component a single-activity architecture to handle all navigation and also passing of data between destinations with SafeArgs plugin.
- Paging for displaying pages of data from a larger dataset from local storage or over network.
- Glide for image loading.
- Coroutines used to manage the local storage i.e.
writing to and reading from the database
. Coroutines help in managing background threads and reduces the need for callbacks. - Room persistence library which provides an abstraction layer over SQLite to allow for more robust database access while harnessing the full power of SQLite.