{"id":13614148,"url":"https://github.com/theapache64/topcorn","last_synced_at":"2025-05-07T09:45:34.120Z","repository":{"id":50268164,"uuid":"256630741","full_name":"theapache64/topcorn","owner":"theapache64","description":"A minimalistic movie listing app to browse IMDB's top 250 movies, built to demonstrate MVVM with latest hot-trending Android development tools.","archived":false,"fork":false,"pushed_at":"2021-06-12T19:05:01.000Z","size":1733,"stargazers_count":230,"open_issues_count":4,"forks_count":49,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-03-31T08:44:15.740Z","etag":null,"topics":["android-jetpack-components","android-lifecycle","coroutines","dagger2","imdb","jaba","kotlin","kotlin-flow","moshi","mvvm","retrofit","room-android"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/theapache64.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-17T23:27:49.000Z","updated_at":"2025-03-23T09:03:42.000Z","dependencies_parsed_at":"2022-09-24T10:01:25.040Z","dependency_job_id":null,"html_url":"https://github.com/theapache64/topcorn","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Ftopcorn","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Ftopcorn/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Ftopcorn/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/theapache64%2Ftopcorn/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/theapache64","download_url":"https://codeload.github.com/theapache64/topcorn/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252854050,"owners_count":21814622,"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-jetpack-components","android-lifecycle","coroutines","dagger2","imdb","jaba","kotlin","kotlin-flow","moshi","mvvm","retrofit","room-android"],"created_at":"2024-08-01T20:00:57.623Z","updated_at":"2025-05-07T09:45:34.095Z","avatar_url":"https://github.com/theapache64.png","language":"Kotlin","funding_links":[],"categories":[":shamrock:  **Categories**",":art: Pattern","Kotlin"],"sub_categories":[":movie_camera: Entertainment","MVVM"],"readme":"![title](extras/title.png)\n[![GitHub issues](https://img.shields.io/github/issues/theapache64/topcorn)](https://github.com/theapache64/topcorn/issues)\n[![GitHub forks](https://img.shields.io/github/forks/theapache64/topcorn)](https://github.com/theapache64/topcorn/network)\n[![GitHub stars](https://img.shields.io/github/stars/theapache64/topcorn)](https://github.com/theapache64/topcorn/stargazers)\n[![GitHub license](https://img.shields.io/github/license/theapache64/topcorn)](https://github.com/theapache64/topcorn/blob/master/LICENSE)\n[![Twitter](https://img.shields.io/twitter/url?style=social)](https://twitter.com/intent/tweet?text=Wow:\u0026url=https%3A%2F%2Fgithub.com%2Ftheapache64%2Ftopcorn)\n\n![light_screenshots](extras/light.png)\n\n# TopCorn 🍿\n\nA minimalistic movie listing app to browse IMDB's top 250 movies,\nbuilt to *demonstrate MVVM with latest hot-trending Android development tools*.\n\n## Dark Mode Available 🌙\n![dark_screenshots](extras/dark.png)\n\n## Download 📥\n\n- Download latest APK from [here](https://github.com/theapache64/topcorn/releases/latest/download/app-debug.apk)\n\n## Built With 🛠\n\n\n- [Kotlin](https://kotlinlang.org/) - First class and official programming language for Android development.\n- [Coroutines](https://kotlinlang.org/docs/reference/coroutines-overview.html) - For asynchronous and more..\n- [Flow](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines.flow/-flow/) - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.\n- [Android Architecture Components](https://developer.android.com/topic/libraries/architecture) - Collection of libraries that help you design robust, testable, and maintainable apps.\n  - [LiveData](https://developer.android.com/topic/libraries/architecture/livedata) - Data objects that notify views when the underlying database changes.\n  - [ViewModel](https://developer.android.com/topic/libraries/architecture/viewmodel) - Stores UI-related data that isn't destroyed on UI changes. \n  - [ViewBinding](https://developer.android.com/topic/libraries/view-binding) - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.\n  - [Room](https://developer.android.com/topic/libraries/architecture/room) - SQLite object mapping library.\n- [Dagger 2](https://dagger.dev/) - Dependency Injection Framework\n- [Retrofit](https://square.github.io/retrofit/) - A type-safe HTTP client for Android and Java.\n- [Moshi](https://github.com/square/moshi) - A modern JSON library for Kotlin and Java.\n- [Moshi Converter](https://github.com/square/retrofit/tree/master/retrofit-converters/moshi) - A Converter which uses Moshi for serialization to and from JSON.\n- [Glide](https://bumptech.github.io/glide/) - An image loading library for Android backed by Kotlin Coroutines.\n- [Material Components for Android](https://github.com/material-components/material-components-android) - Modular and customizable Material Design UI components for Android.\n- [TwinKill](https://github.com/theapache64/twinkill) - A simple library, a collection of utility classes wrapped around JetPack components \n- [MaterialColors](https://github.com/theapache64/material_colors) - Android material color palettes\n\n## Architecture 🗼\n\nThis project follows the famous MVVM architecture and best practices from Google's [GithubBrowserSample](https://github.com/android/architecture-components-samples/tree/master/GithubBrowserSample)\n\n![](extras/arch.png)\n\n## Project Structure 📂\n\n```\n.\n├── App.kt\n├── data\n│   ├── local\n│   │   ├── AppDatabase.kt\n│   │   ├── Converters.kt\n│   │   ├── daos\n│   │   │   └── MoviesDao.kt\n│   │   └── entities\n│   ├── remote\n│   │   ├── ApiInterface.kt\n│   │   └── Movie.kt\n│   └── repositories\n│       └── movies\n│           └── MoviesRepo.kt\n├── di\n│   ├── components\n│   │   └── AppComponent.kt\n│   └── modules\n│       ├── ActivitiesBuilderModule.kt\n│       ├── AppModule.kt\n│       ├── DatabaseModule.kt\n│       ├── NetworkModule.kt\n│       ├── RepoModule.kt\n│       └── ViewModelModule.kt\n├── models\n│   └── FeedItem.kt\n├── ui\n│   ├── activities\n│   │   ├── feed\n│   │   │   ├── FeedActivity.kt\n│   │   │   └── FeedViewModel.kt\n│   │   ├── movie\n│   │   │   ├── MovieActivity.kt\n│   │   │   └── MovieViewModel.kt\n│   │   ├── splash\n│   │   │   ├── SplashActivity.kt\n│   │   │   └── SplashViewModel.kt\n│   └── adapters\n│       ├── FeedAdapter.kt\n│       └── MoviesAdapter.kt\n└── utils\n    ├── BindingAdapters.kt\n    ├── NetworkBoundResource.kt\n    ├── retrofit\n    │   ├── FlowResourceCallAdapterFactory.kt\n    │   └── FlowResourceCallAdapter.kt\n    └── test\n        ├── EspressoIdlingResource.kt\n        └── OpenForTesting.kt\n\n21 directories, 30 files\n```\n\n## Credits 🤗\n\n- 🤓 Icons are from [flaticon.com](https://www.flaticon.com/) \n- 🖌️ Design inspired from [AnimeXStream](https://github.com/mukul500/AnimeXStream) \n- 💽 Data from [top250 API](https://github.com/theapache64/top250)\n- 📄 Thanks [Foodium](https://github.com/patilshreyas/Foodium)\n\n## TODO 🗒️\n\n  - [x] Improve algorithms and code review \n  - [x] Add test cases\n  - [ ] Integrate OMDB API to add search feature\n  - [ ] Add favorites\n\n## Author ✍️\n\n- theapache64\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheapache64%2Ftopcorn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheapache64%2Ftopcorn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheapache64%2Ftopcorn/lists"}