Skip to content

Repository files navigation

GitHub Cards Preview

TopCorn 2 🍿

A minimalistic movie listing app to browse IMDB's top 250 movies, built to demonstrate MVVM with Jetpack Compose.

GitHub issuesGitHub forksGitHub starsGitHub licenseTwitter

Try latest TopCorn2 app apk from below 👇

TopCorn2


Designs - Dark Mode Available 🌙

dark_screenshotsdark_screenshots


Built With 🛠

  • Kotlin - First class and official programming language for Android development.
  • Coroutines - For asynchronous and more..
  • Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
  • Compose - Android’s modern toolkit for building native UI.
  • Navigation - A set of libraries, a plugin, and tooling that simplifies Android navigation.
  • Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
    • LiveData - Data objects that notify views when the underlying database changes.
    • ViewModel - Stores UI-related data that isn't destroyed on UI changes.
    • Room - SQLite object mapping library.
  • Hilt - Dependency Injection Framework
  • Retrofit - A type-safe HTTP client for Android and Java.
  • Moshi - A modern JSON library for Kotlin and Java.
  • Moshi Converter - A Converter which uses Moshi for serialization to and from JSON.
  • Coil - An image loading library for Android.
  • Material Components for Android - Modular and customizable Material Design UI components for Android.

Architecture 🗼

This project follows the famous MVVM architecture and best practices from Google's GithubBrowserSample


Project Structure 📂

├── App.kt
├── data
│ ├── local
│ │ ├── AppDatabase.kt
│ │ ├── Converters.kt
│ │ └── daos
│ │ └── MoviesDao.kt
│ ├── remote
│ │ ├── ApiInterface.kt
│ │ └── Movie.kt
│ └── repo
│ └── MoviesRepo.kt
├── di
│ └── modules
│ ├── DatabaseModule.kt
│ ├── NetworkModule.kt
│ └── PreferenceModule.kt
├── model
│ └── Category.kt
├── ui
│ ├── common
│ │ ├── Fakes.kt
│ │ ├── Poster.kt
│ │ └── RetryMessage.kt
│ ├── main
│ │ ├── MainActivity.kt
│ │ └── MainViewModel.kt
│ ├── screen
│ │ ├── detail
│ │ │ ├── MovieDetailFragment.kt
│ │ │ ├── MovieDetailScreen.kt
│ │ │ └── MovieDetailViewModel.kt
│ │ ├── movies
│ │ │ ├── MoviesFragment.kt
│ │ │ ├── MoviesScreen.kt
│ │ │ └── MoviesViewModel.kt
│ │ └── splash
│ │ ├── SplashFragment.kt
│ │ ├── SplashScreen.kt
│ │ └── SplashViewModel.kt
│ ├── test
│ │ ├── TestActivity.kt
│ │ └── TestViewModel.kt
│ └── theme
│ ├── Theme.kt
│ └── Typography.kt
└── utils
├── calladapter
│ └── flow
│ ├── FlowResourceCallAdapterFactory.kt
│ ├── FlowResourceCallAdapter.kt
│ └── Resource.kt
├── flow
│ └── EventFlow.kt
└── NetworkBoundResource.kt
21 directories, 34 files

Ohh you hate Compose? NP 🤷

Well, we've XML version here, The TopCorn 1

Credits 🤗


TODO 🗒️

  • Improve algorithms and code review
  • Add test cases

About

A minimalistic movie listing app to browse IMDB's top 250 movies, built to demonstrate MVVM with Jetpack Compose.

Topics

Resources

Stars

128 stars

Watchers

3 watching

Forks

Releases

Packages

Used by

Contributors

Languages