/CineWatch

🎥 A minimalistic movie listing app to browse movies using TMDB API, 📲 built to demonstrate MVVM Architecture, Kotlin, Coroutines, Dagger 2/Hilt, Architecture Components, Room, Retrofit, Material Components, CI/CD.

Primary LanguageKotlinMIT LicenseMIT

CineWatch 🎥

A minimalistic movie listing app to browse movies using TMDB Api, built to demonstrate MVVM Architecture with latest hot-trending Android development tools including Dependency Injection, Room and many more.

License UI Library shield Sample App shield Artifact badge local, or jcenter or clonerepo Minimum API Level Maximum API Level GitHub repo size

Features 🚀

  • Explore the Upcoming, Popular and Top Rated Movies.
  • Get detailed decription of all the movies.
  • Get details about the Cast and Crew members.
  • Bookmark your favourite movies.
  • Get movies trailer within the application.
  • Search for movies.

Built With 🛠

  • Kotlin - First class and official programming language for Android development.
  • Coroutines - For asynchronous and more..
  • 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.
    • ViewBinding - 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.
    • Room - SQLite object mapping library.
    • Paging 3 - The Paging library helps you load and display pages of data from a larger dataset from local storage or over network.
  • Navigation Graph - The Navigation component uses a navigation graph to manage your app's navigation.
  • Dagger 2 - Dependency Injection Framework
  • Retrofit - A type-safe HTTP client for Android and Java.
  • Coil - An image loading library for Android backed by Kotlin Coroutines.
  • Material Components for Android - Modular and customizable Material Design UI components for Android.

Download 📥

  • Download latest APK from here

Screenshots 📷

light_screenshot

Dark Mode Available 🌙

dark_screenshots

Architecture 🗼

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

Project Structure 📂

.
├── CineWatch.kt
├── data
|   |
|   ├── api
|   |   ├── NetworkService.kt
|   |   └── SafeApiRequest.kt
│   ├── local
│   │   ├── BookmarkDatabase.kt
│   │   └── dao
│   │     └── BookmarkDao.kt
│   ├── model
│   │   ├── Actor.kt
│   │   ├── Cast.kt
│   │   ├── CastCreditResponse.kt
│   │   ├── Genre.kt
│   │   ├── Movie.kt
│   │   ├── MovieCreditsResponse.kt
│   │   ├── MovieDB.kt
│   │   ├── MovieResponse.kt
│   │   ├── Resourse.kt
│   │   ├── State.kt
│   │   ├── Video.kt
│   │   └── VideoResponse.kt
│   └── repository
│       └── NetworkRepository.kt
├── di
│   └── module
│       ├── ApiModule.kt
│       └── DatabaseModule.kt
├── ui
│   ├── SplashScreenActivity.kt
│   ├── adapter
│   |   ├── BestMoviesRecyclerViewAdapter.kt
│   |   ├── BookmarkRecyclerViewAdapter.kt
│   |   ├── CastRecyclerViewAdapter.kt
│   |   ├── HomeRecyclerViewAdapter.kt
│   |   ├── HomeViewPagerAdapter.kt
│   |   ├── SearchRecyclerViewAdapter.kt
│   |   ├── SimilarMoviesRecyclerViewAdapter.kt 
│   |   └── ViewAllRecyclerViewAdapter.kt
│   ├── details
│   |   ├── ActorDetailsFragment.kt
│   |   ├── ActorDetailsViewModel.kt
│   |   ├── MovieDetailsFragment.kt
│   |   └── MovieDetailsViewModel.kt
│   ├── dialog
│   |   └── VideoPlayer.kt
│   ├── home
│   |   ├── HomeFragment.kt
│   |   └── HomeViewModel.kt
│   ├── list
│   |   ├── ViewAllFragment.kt
│   |   └── ViewAllViewModel.kt
│   ├── main
│   |   ├── MainActivity.ky
│   |   └── viewpager
│   |       └── HomeViewPagerFragment.kt
│   ├── paging
│   |   ├── PopularPagingSource.kt
│   |   ├── SearchPagingSource.kt
│   |   ├── TopRatedPagingSource.kt
│   |   └── UpcomingPagingSource.kt 
│   └── search
│       ├── SearchFragment.kt
│       └── SearchViewModel.kt
└── utils
    ├── ActivityUtils.kt 
    ├── CONSTANTS.kt
    ├── FragmentUtils.kt
    ├── NetworkUtils.kt
    ├── PlaceHolderUtils.kt
    ├── TimeUtils.kt
    └── ViewUtils.kt

Requirements 🎯

  • Android 5.0 and Above
  • Min sdk version 21

Permissions 💻

  • Internet

Donate 💲

If you like the project and wanna support me develop new stuff, You can buy me a coffee.

Buy Me A Coffee

If you liked the project don't forget to star 🌟 and fork 🍽 the project.

forthebadge ForTheBadge ANDROID ForTheBadge GIT