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