Skip to content

Repository files navigation

Kotlin-MVVM-Clean-MovieApp

A minimal yet modern Android application that displays a list of popular movies using the TMDB Movie API.
This project follows MVVM and Clean Architecture principles, built entirely with Jetpack Compose and a robust tech stack including Kotlin, Hilt, Room, Retrofit, Coroutines, and Flow.

This app is intended as a learning resource to showcase best practices in modern Android development. It will be continuously updated to reflect current development trends.


✨ Features

  • Browse a list of popular movies
  • View detailed information for each movie

📸 Screenshots

Movie List Movie Detail
Movie List Movie Detail

🧱 Architecture

This project is based on Uncle Bob's Clean Architecture principles.

Why Clean Architecture?

  • Clear separation of concerns
  • Modular, testable, and scalable codebase
  • Supports parallel and isolated feature development
  • Faster compilation times due to modular structure

Architecture inspiration: Android-Clean-Architecture-Boilerplate

Architecture Diagram


🏗️ Built On / Architecture Foundation

This project leverages my reusable MVVMCleanTemplate as the architectural backbone.

It helps maintain consistency and accelerates development across my Android projects.


📦 Module Overview

  • app: Android-specific code. Depends on all other modules. Displays UI and handles navigation.
  • domain: Business logic. Contains use cases and model definitions. Independent of other layers.
  • data: Repository implementations. Provides a single source of truth and communicates with remote/cache modules.
  • remote: Manages API interactions and network logic (Retrofit).
  • cache: Manages local database access (Room).

🛠️ Tech Stack

  • Kotlin — Google's preferred language for Android development.
  • Kotlin Coroutines — Simplifies asynchronous programming with lightweight threads.
  • Flow API — Handles streams of asynchronous data reactively.
  • Dagger Hilt — Dependency injection framework built on top of Dagger.
  • Android Architecture Components
    • ViewModel — Manages UI-related data in a lifecycle-aware manner.
    • Room — SQLite abstraction for local database access.
    • Navigation — Handles in-app navigation between destinations.
    • Compose — Modern toolkit for building native UI declaratively.
  • Material Components — Implements Material Design UI elements.
  • Retrofit — Type-safe HTTP client for API communication.
  • OkHttp — Efficient HTTP client with HTTP/2 support.
  • Moshi — JSON library for parsing and serialization.
  • Coil — Kotlin-first image loading library using Coroutines.
  • Accompanist — Extension libraries for Jetpack Compose.
  • Mockito — Framework for mocking dependencies in tests.
  • JUnit — Popular unit testing framework.

📝 TODO

  • Migrate to Kotlin DSL for build scripts
  • Integrate Paging 3.0

🚀 How to Run the App

  1. Clone this repository to your local machine.
  2. Register at TMDB and obtain your API_KEY, BASE_URL, and POSTER_URL.
  3. Add your TMDB API key and URLs in the local.properties file or the appropriate configuration file.
  4. Build the application.

🤝 Contributing

Contributions are welcome! If you find a bug, have a feature request, or want to improve the code, feel free to:

  • Open an issue to discuss your ideas or problems.
  • Submit a pull request with your changes.

Please make sure your code follows the existing style and includes relevant tests where applicable.

Thank you for helping to improve this project! 🙌


About

A simple app demonstrating modern Android architecture patterns using MVVM Clean, Jetpack Compose, Kotlin, Retrofit, Hilt, Coroutines, and Kotlin Flow.

Topics

Resources

Stars

4 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages