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