dheerajkotwani / 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.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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 the latest APK build 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

About

πŸŽ₯ 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.

License:MIT License


Languages

Language:Kotlin 100.0%