- Simple Android app written in Kotlin based on Clean Architecture for layer abstractions (view/domain/data)
- Model-View-Presenter for the presentation layer
- Interactors / UseCases are used by the presenters to start a data retrieval flow
- UseCases use Repository pattern to request the data needed
- Repository in this case doesn't have DataSources because there's no database/cache/other sources to retrieve data than just Network. Repository in this project directly request data to the API
- Two different data objects, DTO (Data transfer object) to parse API's response, and Business Object as our own data model.
- DI with Dagger2
- Asynchronous handled by RxJava2 (RxKotlin)
- Image loading handled by Picasso
There are two possible network-failure scenarios in this app. Either when requesting the feed of movies or requesting recommendations for a certain show. In the first scenario a error view is shown where the user is able to tap Retry button, for the second scenario the recommendations layout is just hided.
How it looks like?
- API used: themoviedb.org V3 (you can check the api documentation here).
- Endpoints used: "tv/popular", "tv/{tv_id}/similar"
- RxKotlin https://github.com/ReactiveX/RxKotlin
- Dagger2 https://google.github.io/dagger/
- Picasso http://square.github.io/picasso/
- Lottie https://airbnb.design/lottie/
- Retrofit2 https://square.github.io/retrofit/
- OkHttp3 https://github.com/square/okhttp
- Mockito https://github.com/nhaarman/mockito-kotlin
- DaggerMock https://github.com/fabioCollini/DaggerMock
- Barista https://github.com/SchibstedSpain/Barista
- Instrumentation Testing
- Cache / database