Skip to content

Movie World 📱 android app built with Jetpack Compose, Hilt, Coroutines, Flow, Room, ViewModel based on MVVM architecture recommended by Google. It offers a clean, scalable, and maintainable codebase for Android development.

Notifications You must be signed in to change notification settings

piashcse/Hilt-MVVM-Compose-Movie

Repository files navigation

Movie World (Jetpack Compose)

Jetpack Compose badge-Android API Kotlin GitHub license License

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

Twitter Medium Linkedin Web Blog

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.

About

Movie World 📱 android app built with Jetpack Compose, Hilt, Coroutines, Flow, Room, ViewModel based on MVVM architecture recommended by Google. It offers a clean, scalable, and maintainable codebase for Android development.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages