Giter VIP home page Giter VIP logo

dheerajkotwani / cinewatch Goto Github PK

View Code? Open in Web Editor NEW
36.0 2.0 10.0 15.29 MB

๐ŸŽฅ 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

Kotlin 100.00%
android tmdb mvvm paging3 ci-cd room dagger-hilt navigation-graph kotlin livedata viewmodel viewbinding coroutines retrofit2 coil

cinewatch's Introduction

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.