I have implemented this using all the latest technologies(Kotlin and Android Jetpack Components) and have used the following components,
- MVVM, LiveData and Repository architecture to observe live changes in the data
- Retrofit, GSON for network call and data parsing
- ViewModel is also helping in handling configuration changes such as device rotation
- Caching is implemented using file read/write and Cache Updation is done using WorkManager(from Jetpack)
- Using Android KTX
- Since I'm new to UI and Instrumentation Testing, I have written some very basic test cases as of now but I will be learning new testing techniques to build more tests over the next few days.