Skip to content

canergulgec/ComposeMovieDb

Repository files navigation

ComposeMovieDb

💫   Powered by TheMovieDb built with Jetpack Compose.

alt text

⚙️ Configuration

In order to use MovieDB:

  • You need to get API KEY from TMDb. You can do that by clicking here.
  • Once you obtain key, add your key into local.properties MOVIE_API_KEY = "xxx"
  • Use JDK 17 to build this project.

🌞 Light Mode

       

🌚 Dark Mode

       

🛠 Built With

🏗 Architecture

This project follows Clean Architecture principles with a modular approach:

📁 Module Structure

  • App Module: Main application module with navigation setup
  • Core Modules:
    • core:common - Shared utilities, constants, and extensions
    • core:data - Data layer with repositories, API, and local storage
    • core:domain - Business logic with use cases and mappers
    • core:ui - Shared UI components and theming
    • core:model - Data models and DTOs
    • core:testing - Testing utilities and shared test data
  • Feature Modules:
    • feature:home - Home screen with popular movies
    • feature:detail - Movie detail screen
    • feature:search - Movie search functionality

🔄 Architecture Pattern

  • MVVM (Model-View-ViewModel) pattern for presentation layer
  • Repository Pattern for data access abstraction
  • Use Cases for business logic encapsulation
  • Dependency Injection with Dagger Hilt
  • Unidirectional Data Flow with StateFlow/Flow

🧪 Testing

Comprehensive testing setup with:

  • Unit Tests: JUnit 4, MockK, Truth assertions
  • Coroutine Testing: kotlinx-coroutines-test with Turbine for Flow testing
  • Architecture Testing: androidx.arch.core.core-testing
  • Test Coverage: ViewModels, Use Cases, and Repository implementations

Testing libraries used:

📱 Features

  • Popular Movies: Browse trending and popular movies
  • Movie Details: Detailed view with ratings, overview, and additional information
  • Search: Search movies by title with real-time suggestions
  • Dark/Light Theme: Adaptive theming support
  • Modular Architecture: Clean, scalable, and maintainable codebase
  • Offline Support: DataStore for local preferences
  • Error Handling: Comprehensive error handling with user-friendly messages
  • Crash Reporting: Firebase Crashlytics integration

🎯 Tech Specifications

  • Min SDK: 26 (Android 8.0)
  • Target SDK: 35
  • Compile SDK: 35
  • Java Version: 17
  • Kotlin Version: 1.9.22
  • Compose BOM: 2025.04.01

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages