Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/anitaa1990/trailersapp
- Owner: anitaa1990
- Created: 2018-12-14T04:03:36.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-09-25T09:21:24.000Z (4 months ago)
- Last Synced: 2025-01-22T09:02:18.280Z (7 days ago)
- Topics: 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
- Language: Kotlin
- Size: 14.8 MB
- Stars: 199
- Watchers: 14
- Forks: 83
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
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