{"id":15043136,"url":"https://github.com/anitaa1990/trailersapp","last_synced_at":"2025-04-07T06:13:22.902Z","repository":{"id":48301458,"uuid":"161729778","full_name":"anitaa1990/TrailersApp","owner":"anitaa1990","description":"A simple demo project for The Movie DB based on MVVM clean architecture.","archived":false,"fork":false,"pushed_at":"2024-09-25T09:21:24.000Z","size":15545,"stargazers_count":199,"open_issues_count":5,"forks_count":82,"subscribers_count":13,"default_branch":"master","last_synced_at":"2025-04-04T01:36:52.580Z","etag":null,"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"],"latest_commit_sha":null,"homepage":null,"language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anitaa1990.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-14T04:03:36.000Z","updated_at":"2024-11-25T01:16:38.000Z","dependencies_parsed_at":"2024-10-30T05:25:18.080Z","dependency_job_id":null,"html_url":"https://github.com/anitaa1990/TrailersApp","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anitaa1990%2FTrailersApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anitaa1990%2FTrailersApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anitaa1990%2FTrailersApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anitaa1990%2FTrailersApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anitaa1990","download_url":"https://codeload.github.com/anitaa1990/TrailersApp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247601449,"owners_count":20964864,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["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"],"created_at":"2024-09-24T20:48:37.121Z","updated_at":"2025-04-07T06:13:22.881Z","avatar_url":"https://github.com/anitaa1990.png","language":"Kotlin","readme":"# TrailersApp\nA simple demo project for The Movie DB based on \u003cb\u003eMVVM clean architecture\u003c/b\u003e.\n\n\u003cimg src=\"https://github.com/anitaa1990/TrailersApp/blob/master/media/2.gif\" width=\"200\" style=\"max-width:100%;\"\u003e   \u003cimg src=\"https://github.com/anitaa1990/TrailersApp/blob/master/media/3.gif\" width=\"200\" style=\"max-width:100%;\"\u003e\u003c/br\u003e\u003c/br\u003e\n\n#### App Features\n* Users can view list of the latest movies of their choice.\n* Users can view list of the latest Tv series of their choice.\n* Users can filter the movies or tv series based on popularity, upcoming and top rated.\n* Users can search for any movie or tv series of their choice.\n* Users can click on any movie or tv series to watch the trailers of their choice.\n\n\n#### App Architecture \nBased on mvvm architecture and repository pattern.\n\n\u003cimg src=\"https://github.com/anitaa1990/TrailersApp/blob/master/media/1.png\" width=\"500\" style=\"max-width:500%;\"\u003e\n \n #### The app includes the following main components:\n\n* A local database that servers as a single source of truth for data presented to the user. \n* A web api service.\n* A repository that works with the database and the api service, providing a unified data interface.\n* A ViewModel that provides data specific for the UI.\n* The UI, which shows a visual representation of the data in the ViewModel.\n* Unit Test cases for API service, Database, Repository and ViewModel.\n\n\n#### App Packages\n* \u003cb\u003edata\u003c/b\u003e - contains \n    * \u003cb\u003eapi\u003c/b\u003e - contains the api classes to make api calls to MovieDB server, using Retrofit. \n    * \u003cb\u003edb\u003c/b\u003e - contains the db classes to cache network data.\n    * \u003cb\u003erepository\u003c/b\u003e - contains the repository classes, responsible for triggering api requests and saving the response in the database.\n* \u003cb\u003edi\u003c/b\u003e - contains dependency injection classes, using Dagger2.   \n* \u003cb\u003eui\u003c/b\u003e - contains classes needed to display Activity and Fragment.\n* \u003cb\u003eutil\u003c/b\u003e - contains classes needed for activity/fragment redirection, ui/ux animations.\n\n\n#### App Specs\n* Minimum SDK 16\n* [Java8](https://java.com/en/download/faq/java8.xml) (in master branch) \u0026 [Kotlin](https://kotlinlang.org/) (in kotlin_support branch)\n* MVVM Architecture\n* Android Architecture Components (LiveData, Lifecycle, ViewModel, Room Persistence Library, Navigation Component, ConstraintLayout)\n* [RxJava2](https://github.com/ReactiveX/RxJava) for implementing Observable pattern.\n* [Dagger 2](https://google.github.io/dagger/) for dependency injection.\n* [Retrofit 2](https://square.github.io/retrofit/) for API integration.\n* [Gson](https://github.com/google/gson) for serialisation.\n* [Okhhtp3](https://github.com/square/okhttp) for implementing interceptor, logging and mocking web server.\n* [Mockito](https://site.mockito.org/) for implementing unit test cases\n* [Picasso](http://square.github.io/picasso/) for image loading.\n* Custom Views: [Loading](https://github.com/yankai-victor/Loading), [Side Menu](https://github.com/Yalantis/Side-Menu.Android)\n\n\n\u003ch2\u003eSample App\u003c/h2\u003e\n\u003cp\u003e\u003ca href=\"https://play.google.com/store/apps/details?id=com.an.trailers\"\u003e\u003cimg width=\"150\" alt=\"Get it on Google Play\" src=\"https://camo.githubusercontent.com/ccb26dee92ba45c411e669aae47dcc0706471af7/68747470733a2f2f706c61792e676f6f676c652e636f6d2f696e746c2f656e5f67622f6261646765732f696d616765732f67656e657269632f656e5f62616467655f7765625f67656e657269632e706e67\" data-canonical-src=\"https://play.google.com/intl/en_gb/badges/images/generic/en_badge_web_generic.png\" style=\"max-width:100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanitaa1990%2Ftrailersapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanitaa1990%2Ftrailersapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanitaa1990%2Ftrailersapp/lists"}