Skip to content

ravimhzn/InfosysCodingChallenge

Repository files navigation

InfosysCodingChallenge

App Goal:

The application has been built with offline support. It has been designed using Android Architecture components with Room for offline data caching. The application is built in such a way that whenvever there is a service call, the result will be stored in local database.

The whole application is built based on the MVVM architectural pattern.

Project specifications

Project features:

  • 100% Kotlin
  • Android Jetpack (ViewModel, LiveData, Lifecycle)
  • Clean architecture
  • Data Binding
  • Reactive Programming (RxJava and RxAndroid)
  • Dagger2 Dependency injection (service locator)
  • JUnit4 and Mockito Test

Project Used:

  • Android Studio 3.6.1
  • Kotlin Version 1.3.71
  • Gradle Build Version 3.6.1
  • Android Version 10
  • JVM 1.8

Libraries used

Design patterns:

MVVM:

MVVM stands for “Model View ViewModel”. The main advatage of using MVVM, there is no two way dependency between ViewModel and Model unlike MVP/ MVC. Here the view can observe the datachanges in the viewmodel as we are using LiveData which is lifecycle aware. We're also using RxJava/ RxAndroid as demanded by question. The viewmodel to view communication is achieved through observer pattern (basically observing the state changes of the data in the viewmodel).

TODO:

  • Improve UI for good user interface, Keep the interface simple.
  • Cover edge case in UI test
  • Use RxAndroid in this project. Would like to move to LiveData completely. It looks more clean to me that way.
  • Continuous integration (Setup basic integration, it runs static analysis tools, unit tests, and assembles builds. Was thinking to run UI tests as well, but the setup is a little bit tricky and due to time constraints, have to postpone the idea)
  • Add more description fragment

Note:

Please note that some of the imageUrl doesn't work even though it's not nullOrEmpty.