/tour-reviews

Application that shows a fixed tour and user reviews belonging to that tour. It allows to see a preview of the reviews and to load more previews on the fly.

Primary LanguageJava

GetYourGuide Challenge

Summary

Application that shows a fixed tour and user reviews belonging to that tour. It allows to see a preview of the reviews and to load more previews on the fly.

Design

The application uses MVP Architecture together with dependency injection to provide the objects needed for each view/presenter dynamically. Also it applies the repository pattern to provide access to a cache of objects which are kept in sync with a local data storage and a remote data storage. The local data storage provides persistence when the app subsequently opens without internet.

The Reviews list is capable of infinite scrolling through pagination

Libraries/Dependencies

  • Dagger2 and Dagger-Android for dependency injection to achieve a decoupled more testable logic
  • Room for storing data locally creating redundancy on network failure
  • Retrofit2 for retrieving remote data
  • Retrofit2 converter-gson for converting json to java classes automatically
  • Picasso for loading images efficiently into the views and some transformations
  • Mockito for mocking classes for unit testing

Limitations

  • Current Tour is hardcoded and cannot be provided through fragment arguments