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.
- 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.
- 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 latest APK from here
This project follows the famous MVVM architecture and best practices from Google's GithubBrowserSample
.
├── 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
- Android 5.0 and Above
- Min sdk version 21
- Internet