- Lifecycles Create a UI that automatically responds to lifecycle events.
- Navigation Handle everything needed for in-app navigation.
- Flow used for kotlin flow on android
- StateFlow StateFlow A Flow that represents a read-only state with a single updatable data value that emits updates to the value to it
- SharedFlow is a state-holder observable flow that emits the current and new state updates to its collectors
- Paging3 The Paging library used is to you load and display pages of data from a larger dataset from local storage or over network
- ViewModel Easily schedule asynchronous tasks for optimal execution.
- Retrofit for turns your HTTP API into a Java interface
- Gson for convert Java Objects into their JSON representation
- Hilt for dependency injection
- Glide for Image.
- Room Access your app's SQLite database with in-app objects and compile-time checks.
- Coroutines is used for asynchronous programming on Android
- koltin-parecelize is used between screens to data carry
The app uses MVVM architecture to have a unidirectional flow of data, separation of concern, testability, and a lot more.