Movie World app built with Jetpack Compose, Hilt, Coroutines, Flow, Room and ViewModel based on MVVM architecture. The app follows the architecture to ensure clean, maintainable code and delivers a responsive, modern UI experience, leveraging The Movie DB API.
- Movie
- Movie List
- Movie Search
- Movie Detail
- Recommended Movie
- Favorite Movie in room DB
- TV Series
- TV Series List
- TV Series Search
- TV Series Detail
- Recommended TV Series
- Favorite TV Series in room DB
- Artist detail
- Pagination with paging3
- Filter with genre
- Bottom navigation
- Network connection state with SnackBar
- MVVM Architecture (Model - ComposableView - ViewModel)
- Repository pattern
Fig. MVVM (Model - ComposableView - ViewModel) design pattern.
You will need to provide a developer key to fetch the data from TMDB API.
- Generate a new key (v3 auth) from here. Copy the key and go back to the project.
- Add the key to build config in
./app/build.gradle
:
defaultConfig {
...
buildConfigField("String", "API_KEY", '"TMDB_API_KEY"')
...
}
- Kotlin - First class and official programming language for Android development.
- Jetpack Compose - Jetpack Compose is Android’s modern toolkit for building native UI.
- Coroutines - For asynchronous and more..
- Flow - A cold asynchronous data stream that sequentially emits values and completes normally or with an exception.
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
- Dependency Injection
- Hilt - Easier way to incorporate Dagger DI into Android apps.
- Room - The Room database provides an abstraction layer over SQLite to allow fluent database access while harnessing the full power of SQLite
- Retrofit - A type-safe HTTP client for Android and Java.
- Material Components for Android - Modular and customizable Material Design UI components for Android.
- Timber - A logger with a small, extensible API which provides utility on top of Android's normal Log class.
Mehedi Hassan Piash
Copyright 2024 piashcse (Mehedi Hassan Piash)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.