This is a basic Kotlin Multiplatform app template for Android, iOS, desktop, and web. It includes shared business logic and data handling, and native UI implementations using Compose Multiplatform, SwiftUI, and React.
The template is also available with shared UI written in Compose Multiplatform.
The
kotlin-toolchainbranch showcases the same project configured with the Kotlin Toolchain.
Use the run configurations provided by the run widget in your IDE's toolbar (make sure that you have the Kotlin Multiplatform plugin installed.
You can also use these commands and options:
- Android app:
./gradlew :androidApp:assembleDebug - Desktop app:
./gradlew :desktopApp:hotRun --auto - Web app:
- Install Node.js (which includes
npm) - Build and run the web application:
npm install npm run start
- Install Node.js (which includes
- iOS app: open the iOS project in Xcode and run it from there.
The data displayed by the app is from The Metropolitan Museum of Art Collection API.
The app uses the following multiplatform dependencies in its implementation:
- Ktor for networking
- kotlinx.serialization for JSON handling
- Koin for dependency injection
- KMP-ObservableViewModel for shared ViewModel implementations in common code
- KMP-NativeCoroutines
These are just some of the possible libraries to use for these tasks with Kotlin Multiplatform, and their usage here isn't a strong recommendation for these specific libraries over the available alternatives. You can find a wide variety of curated multiplatform libraries in the kmp-awesome repository.
The Android and desktop apps share these dependencies:
- Compose Multiplatform for UI
- Compose Navigation
- Coil for image loading
The web app is built with React, TypeScript, and Vite.
The iOS app is built with SwiftUI.
