Skip to content
AlirezaPKPublic

About

Android TMDb app showcasing Jetpack Compose, Material Expressive, Koin, Ktor, Room, Clean Architecture and MVI.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Repository files navigation

🎬 TMDB

An Android application built with Kotlin and Jetpack Compose to browse movies and TV series using the TMDB API.

This project demonstrates modern Android development practices, utilizing Clean Architecture and the MVI (Model-View-Intent) presentation pattern.


✨ Features

  • 🎨 Dynamic Theming: Fully customizable UI with light/dark mode support. Users can change the theme and pick a custom seed color for dynamic palettes.
  • 🎥 Discover Media: Browse "Now Playing", "Popular, "Top Rated" and "Upcoming" movies, as well as "Airing Today", "On The Air", "Popular" and "Top Rated" TV series with seamless infinite scroll (pagination).
  • 🔍 Advanced Filtering: Filter movies and TV series based on language, release date, genre, and more.
  • 📖 Rich Details: View comprehensive media details including overviews, cast & crew (credits), high-quality image galleries, and user reviews.
  • 💾 Offline Bookmarks: Bookmark your favorite movies and TV shows. Access your saved media anytime, even without an internet connection.
  • 📥 Gallery Downloads: Save stunning images directly from the media gallery section to your local device storage.

🛠️ Tech Stack & Libraries

  • UI: Jetpack Compose, Material Expressive, Material Icons, Google Fonts, MaterialKolor
  • Architecture: Clean Architecture + MVI (Model-View-Intent)
  • Networking: Ktor Client
  • Image Loading: Coil
  • Local Database: Room
  • Preferences: DataStore
  • Dependency Injection: Koin
  • Navigation: Navigation 3
  • Utilities: Kotlin DateTime, SplashScreen API
  • Code Quality & Generation: KSP, Detekt

🏗️ Architecture & Project Structure

This project strictly follows Clean Architecture principles combined with the MVI design pattern to ensure a scalable, testable, and maintainable codebase.

.
└── tmdb/
    ├── app/
    │   ├── ui
    │   ├── MainActivity.kt
    │   └── TMDBApplication.kt
    ├── core/
    │   ├── data
    │   ├── di
    │   ├── domain
    │   ├── navigation
    │   ├── presentation
    │   └── util
    └── feature/
        ├── bookmark/
        │   ├── data
        │   ├── domain
        │   └── presentation
        ├── discover
        ├── home
        ├── media
        ├── mediaDetail
        ├── mediaList
        └── settings

🚀 Getting Started (Setup)

To run this application locally, you need a free API key from TMDb.

Once you have generated your API key, open the ApiClient.kt file in your project and replace the "API_KEY" placeholder with your actual key inside the Ktor defaultRequest block:

// ApiClient.kt
defaultRequest {
    url {
        protocol = URLProtocol.HTTPS
        host = "api.themoviedb.org"
        path("3/")
        parameters.append(
            "api_key",
            "YOUR_TMDB_API_KEY_HERE", // 👈 Replace "API_KEY" with your actual key
        )
    }
}

📱 Screenshots

Feature Light Theme Dark Theme
Home Home Light Home Dark
Pagination Home Light Home Dark
Overview Home Light Home Dark
Bookmarked Home Light Home Dark
Credits Home Light Home Dark
Gallery Home Light Home Dark
Download Home Light Home Dark
Reviews Home Light Home Dark
Discover Home Light Home Dark
Bookmark Home Light Home Dark
Settings Home Light Home Dark

About

Android TMDb app showcasing Jetpack Compose, Material Expressive, Koin, Ktor, Room, Clean Architecture and MVI.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages