A simple demo project for The Movie DB based on MVVM clean architecture.
- Users can view list of the latest movies of their choice.
- Users can view list of the latest Tv series of their choice.
- Users can filter the movies or tv series based on popularity, upcoming and top rated.
- Users can search for any movie or tv series of their choice.
- Users can click on any movie or tv series to watch the trailers of their choice.
Based on mvvm architecture and repository pattern.
- A local database that servers as a single source of truth for data presented to the user.
- A web api service.
- A repository that works with the database and the api service, providing a unified data interface.
- A ViewModel that provides data specific for the UI.
- The UI, which shows a visual representation of the data in the ViewModel.
- Unit Test cases for API service, Database, Repository and ViewModel.
- data - contains
- api - contains the api classes to make api calls to MovieDB server, using Retrofit.
- db - contains the db classes to cache network data.
- repository - contains the repository classes, responsible for triggering api requests and saving the response in the database.
- di - contains dependency injection classes, using Dagger2.
- ui - contains classes needed to display Activity and Fragment.
- util - contains classes needed for activity/fragment redirection, ui/ux animations.
- Minimum SDK 16
- Java8 (in master branch) & Kotlin (in kotlin_support branch)
- MVVM Architecture
- Android Architecture Components (LiveData, Lifecycle, ViewModel, Room Persistence Library, Navigation Component, ConstraintLayout)
- RxJava2 for implementing Observable pattern.
- Dagger 2 for dependency injection.
- Retrofit 2 for API integration.
- Gson for serialisation.
- Okhhtp3 for implementing interceptor, logging and mocking web server.
- Mockito for implementing unit test cases
- Picasso for image loading.
- Custom Views: Loading, Side Menu