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.
- Browse a list of popular movies
 - View detailed information for each movie
 
| Movie List | Movie Detail | 
|---|---|
![]()  | 
![]()  | 
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
This project leverages my reusable MVVMCleanTemplate as the architectural backbone.
It helps maintain consistency and accelerates development across my Android projects.
- 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).
 
- 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.
 
- Migrate to Kotlin DSL for build scripts
 - Integrate Paging 3.0
 
- Clone this repository to your local machine.
 - Register at TMDB and obtain your API_KEY, BASE_URL, and POSTER_URL.
 - Add your TMDB API key and URLs in the 
local.propertiesfile or the appropriate configuration file. - Build the application.
 
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! 🙌


