Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/anitaa1990/trailersapp

A simple demo project for The Movie DB based on MVVM clean architecture.
https://github.com/anitaa1990/trailersapp

android android-app android-studio dagger2-android dagger2-mvvm databinding gson java-8 kotlin-android kotlin-language livedata mvvm-architecture navigation picasso-library repository-pattern retrofit2-rxjava2 room-persistence-library rxjava2

Last synced: 7 days ago
JSON representation

A simple demo project for The Movie DB based on MVVM clean architecture.

Awesome Lists containing this project

README

        

# TrailersApp
A simple demo project for The Movie DB based on MVVM clean architecture.

#### App Features
* 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.

#### App Architecture
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.

#### App Packages
* 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.

#### App Specs
* Minimum SDK 16
* [Java8](https://java.com/en/download/faq/java8.xml) (in master branch) & [Kotlin](https://kotlinlang.org/) (in kotlin_support branch)
* MVVM Architecture
* Android Architecture Components (LiveData, Lifecycle, ViewModel, Room Persistence Library, Navigation Component, ConstraintLayout)
* [RxJava2](https://github.com/ReactiveX/RxJava) for implementing Observable pattern.
* [Dagger 2](https://google.github.io/dagger/) for dependency injection.
* [Retrofit 2](https://square.github.io/retrofit/) for API integration.
* [Gson](https://github.com/google/gson) for serialisation.
* [Okhhtp3](https://github.com/square/okhttp) for implementing interceptor, logging and mocking web server.
* [Mockito](https://site.mockito.org/) for implementing unit test cases
* [Picasso](http://square.github.io/picasso/) for image loading.
* Custom Views: [Loading](https://github.com/yankai-victor/Loading), [Side Menu](https://github.com/Yalantis/Side-Menu.Android)

Sample App


Get it on Google Play