Cinemax is a Movies & TV Shows application for Android and iOS, built with Compose Multiplatform.
or get the apk from the Releases section.
- Generate an API key from The Movie Database.
- Put the key in the
local.propertiesfile.
cinemax.apikey=YOUR_API_KEY_HERECinemax 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.
The Android app can be built and run using the default configuration in Android Studio.
./gradlew :composeApp:assembleDebugThe iOS app requires Xcode and can be run from the iosApp directory.
- Open
iosApp/iosApp.xcodeprojin Xcode - Select a simulator or device
- Build and run
Alternatively, build the iOS framework from command line:
./gradlew :composeApp:linkDebugFrameworkIosSimulatorArm64The app contains the usual debug and release build variants.
For normal development use the debug variant. For UI performance testing use the release
variant.
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
| 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 |
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 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.
- Design on Figma.
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.











