Skip to content

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

License

Notifications You must be signed in to change notification settings

TheCodeMonks/TopCorn2

Repository files navigation

title GitHub issues GitHub forks GitHub stars GitHub license Twitter

light_screenshots

TopCorn 2 🍿

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

What is TopCorn 1? 🤷

TopCorn 1 is the XML version of this repository

Dark Mode Available 🌙

dark_screenshots

Download 📥

  • Download latest APK from here

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
│   └── repositories
│       └── movies
│           └── 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
│   └── theme
│       ├── Theme.kt
│       └── Typography.kt
└── utils
    ├── calladapter
    │   └── flow
    │       ├── FlowResourceCallAdapterFactory.kt
    │       ├── FlowResourceCallAdapter.kt
    │       └── Resource.kt
    ├── flow
    │   └── EventFlow.kt
    ├── livedata
    │   └── SingleLiveEvent.kt
    └── NetworkBoundResource.kt

23 directories, 35 files

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

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages