This App follows MVVM architecture along with repository as an abstraction layer which interacts with Network to fetch the data. It uses Android paging library to perform endless scroll.
- Retrofit and Okhttp : For Networking
- Espresso: For activity testing with all states
- Mockito : For Unit Testing of FlickrApi
- Dagger2 : For dependency injection
- Paging : For pagingination (i.e., PagedListAdapter for recyclerview and PageKeyedDataSource for network calls)
Every response from network are wrapped in a single data type DATA, with NetworkState as a field which defines the state in which the call is.