Used the following concepts
- MVVM architecture
- Koin dependency injection
- Coroutines for multiple threaded and different scope operations
- View binding for xml file binding in UI components (Activity)
- Retrofit for rest API calls
- Gson for JSON data conversion
- Android architecture component (Live Data, View Model, Repository etc)
- Kotlin extention components
- Material libraries
- Used the webp images to decrease the size of Apk instead of jpeg or png
Know Issues
- Loading indicator via Movie Result Sealed classes
- Error handling for no network and empty list while filtering
Improvements
- Using of the navigation component, didn't used it as there was not much of the navigation inside the application it would be miuch easier way to implement
- Didn't use PAGING library for Pagination (Jetpack) because of limitation of the API data
- Choose Koin over Dagger as I am currently working with Dagger wanted to learn the Koin implementation and learn something new. If I would have given choice to choose DI, I would have tried out the HILT (Reason - out of the box support by android team and testing capability)
- Implementation of the ROOM to save the user data, and cache to avoid the API call.
- Completion of unit test cases