mgdiez / MoviesDbApp

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

MoviesDbApp logo

App screenshots

feed detail1 detail2 detail3

Architecture & Implementation details

  • 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

Error states

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?

error1 error2

API

  • API used: themoviedb.org V3 (you can check the api documentation here).
  • Endpoints used: "tv/popular", "tv/{tv_id}/similar"

Third-Party Libraries

TODOs

  • Instrumentation Testing
  • Cache / database

Support & contact

marcgdiez@gmail.com

@marcgdiez