💫 Powered by TheMovieDb built with Jetpack Compose.
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.
- Kotlin
- Retrofit + Moshi for networking
- Dagger Hilt for dependency injection
- Coroutines Flow for reactive programming
- Splash Screen API
- Jetpack
- Firebase
- Crashlytics for crash reporting
- Analytics for user analytics
- Coil for image loading
- Lottie for animations
- Timber for logging
This project follows Clean Architecture principles with a modular approach:
- App Module: Main application module with navigation setup
- Core Modules:
core:common
- Shared utilities, constants, and extensionscore:data
- Data layer with repositories, API, and local storagecore:domain
- Business logic with use cases and mapperscore:ui
- Shared UI components and themingcore:model
- Data models and DTOscore:testing
- Testing utilities and shared test data
- Feature Modules:
feature:home
- Home screen with popular moviesfeature:detail
- Movie detail screenfeature:search
- Movie search functionality
- 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
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:
- JUnit 4 for test framework
- MockK for mocking
- Truth for fluent assertions
- Turbine for testing Flow emissions
- Coroutines Test for testing suspending functions
- 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
- 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