Skip to content

junaid-umar/MovieApp-CMP

Repository files navigation

WIP - Movie App CMP 🎬

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.

WIP - Compose refactoring, favourites impl SQLDelight


📱 Platforms

  • Android
  • iOS
  • Desktop JVM

🏗️ Project Structure

.
├── 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

🚀 Tech Stack

  • 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

🧩 Architecture Overview

This project uses a feature-based modular architecture:

📦 Features Layer (features/*)

  • Independent feature modules (e.g. movies, favourites)

  • Each feature contains:

    • data
    • domain
    • ui

🧠 Core Layer (core)

  • Networking
  • Shared utilities
  • Base classes and helpers

🎨 Core UI (core-ui)

  • Reusable UI components
  • Navigation system

🖥️ Compose App (composeApp)

  • Shared UI for Android + iOS + Desktop using Compose Multiplatform

🧱 Feature Structure

Each feature follows Clean Architecture:

feature-name
├── data        # API, repositories, DTOs
├── domain      # Use cases, business logic, models
└── ui          # ViewModels, UI state, screens

🚀 Run Instructions

Android

./gradlew :androidApp:installDebug

Desktop (JVM)

./gradlew :desktopApp:run

iOS

Open iosApp in Xcode and run on simulator/device.


⚙️ Requirements

  • JDK 17+
  • Android Studio Hedgehog or newer
  • Xcode (for iOS development)
  • Kotlin Multiplatform plugin enabled

🧪 Key Concepts

  • Shared UI using Compose Multiplatform
  • Single business logic for all platforms
  • Platform-specific entry points only
  • Modular feature-driven architecture
  • Dependency injection via Koin

🎯 Goals

  • Maximum code sharing across Android, iOS, and Desktop
  • Clean scalable architecture
  • Feature isolation for maintainability
  • Minimal platform-specific duplication

📸 Screenshots & Demos

🤖 Android

📹 Android Demo Video


🍏 iOS

📹 iOS Demo Video


💻 Desktop


About

Kotlin Multiplatform Movie App built with Compose Multiplatform targeting Android, iOS, and Desktop (JVM) using a clean modular architecture with shared UI and business logic.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors