A Kotlin Multiplatform (KMP) movie application built with Compose Multiplatform (CMP), targeting Android, iOS, and JVM Desktop. The project follows a modular architecture focused on scalability, clean separation of concerns, and maximum code sharing across all platforms.
- Android
- iOS
- Desktop JVM
.
├── androidApp # Android entry point
├── iosApp # iOS entry point (Swift/SwiftUI bridge)
├── desktopApp # Desktop entry point (JVM)
├── composeApp # Shared Compose Multiplatform UI (Android + iOS + Desktop)
├── core # Core utilities, base logic, networking
├── core-ui # Shared UI components & navigation system
│ └── navigation
├── features # Feature-based modules (movies, details, etc.)
├── build-logic # Convention plugins & build setup
├── gradle # Dependency catalogs & versions
├── .gitignore
├── build.gradle.kts
├── gradle.properties
├── gradlew
├── gradlew.bat
├── settings.gradle.kts
- Kotlin Multiplatform (KMP)
- Compose Multiplatform (UI sharing across Android, iOS, Desktop)
- Kotlin/JVM (Desktop target)
- Android Native
- iOS Native (via KMP framework)
- Koin (Dependency Injection)
- Kotlin Coroutines & Flow
- Gradle Kotlin DSL
- Clean Modular Architecture
This project uses a feature-based modular architecture:
-
Independent feature modules (e.g. movies, favourites)
-
Each feature contains:
datadomainui
- Networking
- Shared utilities
- Base classes and helpers
- Reusable UI components
- Navigation system
- Shared UI for Android + iOS + Desktop using Compose Multiplatform
Each feature follows Clean Architecture:
feature-name
├── data # API, repositories, DTOs
├── domain # Use cases, business logic, models
└── ui # ViewModels, UI state, screens
./gradlew :androidApp:installDebug./gradlew :desktopApp:runOpen iosApp in Xcode and run on simulator/device.
- JDK 17+
- Android Studio Hedgehog or newer
- Xcode (for iOS development)
- Kotlin Multiplatform plugin enabled
- Shared UI using Compose Multiplatform
- Single business logic for all platforms
- Platform-specific entry points only
- Modular feature-driven architecture
- Dependency injection via Koin
- Maximum code sharing across Android, iOS, and Desktop
- Clean scalable architecture
- Feature isolation for maintainability
- Minimal platform-specific duplication




