Skip to content

Cinemax is a Movies & TV Shows application for Android and iOS, built with Compose Multiplatform.

License

Notifications You must be signed in to change notification settings

AfigAliyev/Cinemax-CMP

Repository files navigation

Cinemax

Cinemax

Cinemax is a Movies & TV Shows application for Android and iOS, built with Compose Multiplatform.

Get it on Google Play Get it on IzzyOnDroid

or get the apk from the Releases section.

Preview

Getting Started

cinemax.apikey=YOUR_API_KEY_HERE

Development Environment

Cinemax uses the Gradle build system and can be imported directly into the latest stable version of Android Studio (available here) or Fleet. For iOS development, Xcode is required.

Android

The Android app can be built and run using the default configuration in Android Studio.

./gradlew :composeApp:assembleDebug

iOS

The iOS app requires Xcode and can be run from the iosApp directory.

  1. Open iosApp/iosApp.xcodeproj in Xcode
  2. Select a simulator or device
  3. Build and run

Alternatively, build the iOS framework from command line:

./gradlew :composeApp:linkDebugFrameworkIosSimulatorArm64

Build

The app contains the usual debug and release build variants.

For normal development use the debug variant. For UI performance testing use the release variant.

Architecture

The Cinemax app follows Clean Architecture principles with the following layers:

  • Presentation: Compose UI with MVVM pattern using ViewModels
  • Domain: Use cases and repository interfaces
  • Data: Repository implementations, data sources, and mappers

Architecture diagram

Tech Stack

Category Library
UI Framework Compose Multiplatform
Architecture MVVM with Clean Architecture
Dependency Injection Koin
Networking Ktor
Database Room (KMP)
Image Loading Coil
Navigation Compose Navigation
Preferences DataStore
Serialization Kotlinx Serialization
Async Kotlin Coroutines

Project Structure

Cinemax/
├── composeApp/                    # Shared Kotlin Multiplatform module
│   ├── src/
│   │   ├── commonMain/           # Shared code for all platforms
│   │   │   ├── kotlin/com/cinemax/
│   │   │   │   ├── core/         # Core modules (data, domain, ui, network, database)
│   │   │   │   ├── feature/      # Feature modules (home, search, details, etc.)
│   │   │   │   └── di/           # Dependency injection setup
│   │   │   └── composeResources/ # Shared resources (drawables, fonts, strings)
│   │   ├── androidMain/          # Android-specific implementations
│   │   └── iosMain/              # iOS-specific implementations
│   └── build.gradle.kts
├── iosApp/                        # iOS application target
│   ├── iosApp/                   # Swift source files
│   └── iosApp.xcodeproj/         # Xcode project
├── build.gradle.kts              # Root build configuration
└── settings.gradle.kts           # Project settings

UI

UI components are designed according to the custom design system and built entirely using Compose Multiplatform.

The app has one dark theme that uses predefined colors.

UI Layer Architecture

Credits

License

Copyright 2022 Afig Aliyev

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.