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.
The app includes the following main components:
- 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