Master/Details Android app consumes the ShutterStock specially the search api to retrieve images using the query submitted by the user
As usual, you get started by cloning the project to your local machine:
replace YOUR-USERNAME with your account username
$ git clone https://github.com/YOUR-USERNAME/Shutter-Stock-Client.git
- Images search
- endless scroll
- Image Viewer
- Kotlin
- Retrofit
- Picasso
- Dagger2
- RxJava
- ReactiveStreams
- LiveData
- ViewModel
- Motion layout
- Mock Web Server
- I applied MVVM architecture with using the LiveData and ViewModel from Android Jetpack which is recommeded by Google, to get the app layer less coupling and high cohesion. Using view models to store and manage UI-related data in a lifecycle conscious way
- Retrofit -> to make a REST API calls in a reliable way.
- Picasso -> to manage the loading of the images from urls.
- Dagger2 -> for dependency injectio
- Rxjava & ReactiveStreams -> to handle the asynchronous tasks efficiently, and reactive streams to adapt the Rx Observables with the LiveData
- Mock Web Server -> to mock web API calls in unit testing
- implement disk cache using database , to cache the most search result with responsible validity cache policy.
- secure the CLIENNT_API_KEY and SECRET_KEY.
- add more error handling, as i just handled the most common errors from the HttpExceptions [500, 400, 401]
- refactor the error handling in the BaseFragment, it could be more reliable.
- add more test [unit - ui testing] cases to incrase the code coverage.
- style the app, use values files [dimensions - constants - styles - strings] in the app instead of hardcoded values.
- localize tha app.
- enable proguard rules.
- apply filter touches when obscured
- use the navigation library from Jetpack
- Add a Network Security Configuration file
- lower the min sdk to support more users.