A Kotlin Multiplatform (KMP) application for browsing movies,
built for Android and iOS platforms with shared business logic and compose UI implementations.
📱 Movie List: Browse popular and trending movies
🔍 Search: Search for movies by title
📄 Movie Details: View detailed information about any movie
🎨 Cross Platform UI: Compose UI implementations for optimal user experience
🏪 Offline caching : Added support for offline caching of list screen using SQLDelight
Core Features:
- Movie list
- Pagination
- Movie detail screen
- Search functionality
- Local Data caching
The Movie Database (TMDB) API We use TMDB API for fetching movie data.
MVVM: For presentation layer state management
Repository Pattern: Abstracts data sources
Dependency Injection: Using Koin for shared DI
Single Source of Truth: Network as source of truth
Unidirectional Data Flow: Clear data flow from UI to domain to data layer
Kotlin Multiplatform: 2.0.0+
Ktor: HTTP client for API calls
SQLDelight: Local database for caching
Kotlinx Serialization: JSON parsing
Kotlinx Coroutines: Asynchronous programming
Koin: Dependency injection
Jetpack Compose: Modern declarative multiplatform UI
AndroidKMP.mp4
IosKMP.mov
Before you begin, ensure you have the following installed:
| Tool | Version | Purpose |
|---|---|---|
| JDK | 17 or higher | Java Development Kit for Kotlin compilation |
| Android Studio | Ladybug or later | Android development IDE |
| Xcode | 15.0+ | iOS development (Mac only) |
| CocoaPods | Latest version | iOS dependency management |
Installation Links:
- Download JDK
- Download Android Studio
- Download Xcode (Mac App Store)
- Install CocoaPods
You'll need a free TMDB API key to fetch movie data:
Step 1: Visit TMDB
Step 2: Create a free account
- Fill in your details and verify your email
Step 3: Navigate to API settings
- Go to your profile → Settings → API
- Click **Create` or Request an API Key
- Choose Developer option
- Accept the terms of use
Step 4: Copy your API key
- Once generated, copy the API Key (v3 auth)
💡 Note: Keep your API key secure and never commit it to version control
Create a local.properties file in the project root:
project-root/
└── local.properties
Add the following configuration:
sdk.dir=/path/to/Android/sdk
movieApiKey=your_api_key_hereNote: Replace
your_api_key_herewith your TMDB API key.