Movie World (Jetpack Compose)
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.
Main Features
- 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
Architecture ποΈ
- MVVM Architecture (Model - ComposableView - ViewModel)
- Repository pattern
Fig. MVVM (Model - ComposableView - ViewModel) design pattern.
API Key π
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"')
...
}
Built With π
- 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.
- LiveData - Data objects that notify views when the underlying database changes.
- ViewModel - Stores UI-related data that isn't destroyed on UI changes.
- Paging3 - The Paging library helps you load and display pages of data from a larger dataset from local storage or over network
- 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.
π¨ Developed By
Mehedi Hassan Piash
License
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.