Skip to content

hoangchungk53qx1/movie-preview

Repository files navigation

Jetpack Compose Movie App (Compose + Flow + Hilt + Room + MVVM (MVI) + CleanArch + Retrofit)

This is an example of an Android App who uses Jetpack Compose to draw the UI, Kotlin Coroutines Flow to retrieve a list of the recent movies from https://www.themoviedb.org.

How use this app

  • Request an api key from themoviedb https://developers.themoviedb.org/3/getting-started/authentication and later put that key in the build.gradle app file.

  • Create local.properties and add movie_preview.apikey= "************" in this

    The Movie Preview app has been fully modularized and you can find the detailed guidance and description of the modularization strategy used in

V1

  • [√] Add Modularization
  • [√] Add Search
  • [√] Add Convention Plugin

V2

  • [√] Add Redux Flow Module
  • [√] Add FlowExt Module
  • [√] Add Search Feature with ReduxFlow style

Checkout the dev branch to see the redux flow

Features

Tech Stack

  • Kotlin - Official programming language for Android development.
  • Jetpack Compose - Android’s modern toolkit for building native UI.
  • Coroutines and Flow - Official Kotlin's tooling for performing asynchronous work.
  • Android Jetpack - Jetpack is a suite of libraries to help developers build state-of-the-art applications.
    • ViewModel - The ViewModel is designed to store and manage UI-related data in a lifecycle conscious way.
    • Room - The Room library provides an abstraction layer over SQLite to allow for more robust database access.
    • Dagger Hilt - Hilt is a dependency injection library for Android.
  • Accompanist - A collection of extension libraries for Jetpack Compose.
  • Retrofit - A library for building REST API clients.
  • Coil - An image loading library.
  • Detekt - A static code analysis library for Kotlin.
  • Ktlint (Kotlinter) - A library for formatting Kotlin code according to official guidelines.
  • Twitter Jetpack Compose Rules
  • Gradle's Kotlin DSL - Gradle’s Kotlin DSL is an alternative syntax to the Groovy DSL with an enhanced editing experience.

References

Contributors ✨


Hoangchung