{"id":22140999,"url":"https://github.com/thecodemonks/topcorn2","last_synced_at":"2025-07-25T23:31:58.398Z","repository":{"id":43972777,"uuid":"326403466","full_name":"TheCodeMonks/TopCorn2","owner":"TheCodeMonks","description":"A minimalistic movie listing app to browse IMDB's top 250 movies, built to demonstrate MVVM with Jetpack Compose.","archived":false,"fork":false,"pushed_at":"2022-11-08T03:41:02.000Z","size":11285,"stargazers_count":126,"open_issues_count":2,"forks_count":21,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-05-01T15:33:32.869Z","etag":null,"topics":["android-mvvm","jetpack-compose","jetpack-navigation","retrofit2-kotlin"],"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/TheCodeMonks.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":"2021-01-03T12:37:28.000Z","updated_at":"2024-03-31T23:15:42.000Z","dependencies_parsed_at":"2022-09-06T23:21:23.077Z","dependency_job_id":null,"html_url":"https://github.com/TheCodeMonks/TopCorn2","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheCodeMonks%2FTopCorn2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheCodeMonks%2FTopCorn2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheCodeMonks%2FTopCorn2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheCodeMonks%2FTopCorn2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheCodeMonks","download_url":"https://codeload.github.com/TheCodeMonks/TopCorn2/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227629067,"owners_count":17796054,"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-mvvm","jetpack-compose","jetpack-navigation","retrofit2-kotlin"],"created_at":"2024-12-01T21:09:09.691Z","updated_at":"2024-12-01T21:09:10.210Z","avatar_url":"https://github.com/TheCodeMonks.png","language":"Kotlin","readme":"![GitHub Cards Preview](https://github.com/TheCodeMonks/topcorn2/blob/master/extras/topcorn2_coverart.jpg?raw=true)\n\n# TopCorn 2 🍿\n\nA minimalistic movie listing app to browse IMDB's top 250 movies,\nbuilt to *demonstrate MVVM with Jetpack Compose*.\n\n[![GitHub issues](https://img.shields.io/github/issues/TheCodeMonks/topcorn2)](https://github.com/TheCodeMonks/topcorn2/issues)\n[![GitHub forks](https://img.shields.io/github/forks/TheCodeMonks/topcorn2)](https://github.com/TheCodeMonks/topcorn2/network)\n[![GitHub stars](https://img.shields.io/github/stars/TheCodeMonks/topcorn2)](https://github.com/TheCodeMonks/topcorn2/stargazers)\n[![GitHub license](https://img.shields.io/github/license/TheCodeMonks/topcorn2)](https://github.com/TheCodeMonks/topcorn2/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%2FTheCodeMonks%2Ftopcorn2)\n\n***Try latest TopCorn2 app apk from below 👇***\n\n[![TopCorn2](https://img.shields.io/badge/TopCorn2🍿-APK-black.svg?style=for-the-badge\u0026logo=android)](https://github.com/TheCodeMonks/topcorn2/releases/latest/download/app-debug.apk)\n\n\u003cbr /\u003e\n\n\n## Designs - Dark Mode Available 🌙 \n![dark_screenshots](extras/screenshot_light.png)\n![dark_screenshots](extras/screenshot_dark.png)\n\n\u003cbr /\u003e\n\n## Built With 🛠\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- [Compose](https://developer.android.com/jetpack/compose) - Android’s modern toolkit for building native UI.\n- [Navigation](https://developer.android.com/guide/navigation) - A set of libraries, a plugin, and tooling that simplifies Android navigation.\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  - [Room](https://developer.android.com/topic/libraries/architecture/room) - SQLite object mapping library.\n- [Hilt](https://dagger.dev/hilt/) - 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- [Coil](https://github.com/chrisbanes/accompanist/blob/main/coil/README.md) - An image loading library for Android.\n- [Material Components for Android](https://github.com/material-components/material-components-android) - Modular and customizable Material Design UI components for Android.\n\n\u003cbr /\u003e\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.jpg)\n\n\u003cbr /\u003e\n\n## Project Structure 📂\n\n```\n├── App.kt\n├── data\n│   ├── local\n│   │   ├── AppDatabase.kt\n│   │   ├── Converters.kt\n│   │   └── daos\n│   │       └── MoviesDao.kt\n│   ├── remote\n│   │   ├── ApiInterface.kt\n│   │   └── Movie.kt\n│   └── repo\n│       └── MoviesRepo.kt\n├── di\n│   └── modules\n│       ├── DatabaseModule.kt\n│       ├── NetworkModule.kt\n│       └── PreferenceModule.kt\n├── model\n│   └── Category.kt\n├── ui\n│   ├── common\n│   │   ├── Fakes.kt\n│   │   ├── Poster.kt\n│   │   └── RetryMessage.kt\n│   ├── main\n│   │   ├── MainActivity.kt\n│   │   └── MainViewModel.kt\n│   ├── screen\n│   │   ├── detail\n│   │   │   ├── MovieDetailFragment.kt\n│   │   │   ├── MovieDetailScreen.kt\n│   │   │   └── MovieDetailViewModel.kt\n│   │   ├── movies\n│   │   │   ├── MoviesFragment.kt\n│   │   │   ├── MoviesScreen.kt\n│   │   │   └── MoviesViewModel.kt\n│   │   └── splash\n│   │       ├── SplashFragment.kt\n│   │       ├── SplashScreen.kt\n│   │       └── SplashViewModel.kt\n│   ├── test\n│   │   ├── TestActivity.kt\n│   │   └── TestViewModel.kt\n│   └── theme\n│       ├── Theme.kt\n│       └── Typography.kt\n└── utils\n    ├── calladapter\n    │   └── flow\n    │       ├── FlowResourceCallAdapterFactory.kt\n    │       ├── FlowResourceCallAdapter.kt\n    │       └── Resource.kt\n    ├── flow\n    │   └── EventFlow.kt\n    └── NetworkBoundResource.kt\n\n21 directories, 34 files\n```\n\u003cbr /\u003e\n\n## Ohh you hate Compose? NP 🤷\n\nWell, we've XML version here, The [TopCorn 1](https://github.com/theapache64/topcorn)\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\u003cbr /\u003e\n\n## TODO 🗒️\n\n  - [ ] Improve algorithms and code review\n  - [ ] Add test cases\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecodemonks%2Ftopcorn2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthecodemonks%2Ftopcorn2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthecodemonks%2Ftopcorn2/lists"}