JaySinghTalreja / CinePop

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CinePop 🍿

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


Designs - Dark Mode Available πŸŒ™

dark_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

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.

License:Apache License 2.0


Languages

Language:Kotlin 100.0%