Kotlin Multiplatform Academy
Share Kotlin code across Android, iOS, and beyond with Kotlin Multiplatform. From expect/actual to Compose Multiplatform and shipping shared modules.
Explore Course Tools
Supercharge your learning with AI-powered tools and features
How You'll Learn
30 Courses
Every course in the Kotlin Multiplatform Academy learning path.
What Is Kotlin Multiplatform & Why It Wins
Explain what KMP shares, what stays native, and when to reach for it on a real team.
- Share Logic, Not UI: The KMP Promise
- KMP vs Flutter vs React Native
- Targets: Android, iOS, Desktop, Web, Server
- +1 more
Set Up Your First KMP Project
Install the toolchain and generate a working shared-module project from the wizard.
- JDK, Android Studio & the KMP Plugin
- Xcode & CocoaPods for the iOS Side
- Generate a Project with the KMP Wizard
- +1 more
Inside the KMP Project Structure
Navigate Gradle modules and source sets so you always know where code belongs.
- The shared Module vs the App Modules
- commonMain, androidMain & iosMain
- Reading the shared build.gradle.kts
- +1 more
Write Your First Shared Function
Author pure Kotlin in commonMain and call it from both Android and iOS.
- A Greeting Function in commonMain
- Call Shared Code from the Android App
- Call Shared Code from the iOS App
- +1 more
Kotlin Standard Library Across Platforms
Use the parts of the Kotlin stdlib that work identically on every target.
- Strings, Numbers & Collections Everywhere
- map, filter & fold in Shared Code
- Dates with kotlinx-datetime
- +1 more
expect / actual: Bridge to Each Platform
Declare a common API once and provide a real implementation per platform.
- Why expect/actual Exists
- Get the Platform Name per Target
- expect/actual Classes & Properties
- +1 more
Model Your Domain with Shared Data Classes
Design clean shared models and enums that both apps consume.
- Data Classes for Your Domain
- Enums & Sealed Classes for State
- Null Safety in Shared Models
- +1 more
Share Real Business Logic
Move calculations and rules into shared code so logic never drifts between apps.
- A Shared Price & Tax Calculator
- Format Currency & Numbers
- Business Rules as Pure Functions
- +1 more
Build Your First Reusable Shared Module
Package shared logic into a clean module with a public API both apps use.
- Design a Small Public API
- internal vs public Visibility
- Organize Packages Inside the Module
- +1 more
Run It on Android & iOS Devices
Launch the shared-powered app on both platforms and debug the wiring.
- Run the Android App from Studio
- Open & Run the iOS App in Xcode
- How the iOS Framework Is Built
- +1 more
Coroutines in Shared Code
Run async work in commonMain and expose it cleanly to both platforms.
- suspend Functions That Work Everywhere
- Dispatchers Across Platforms
- CoroutineScope & Lifecycle
- +1 more
Reactive Streams with Kotlin Flow
Model continuous data with Flow and consume it on each platform.
- Flow Basics in Shared Code
- StateFlow for Shared UI State
- Operators: map, filter, combine
- +1 more
Networking with Ktor Client
Make real HTTP requests from shared code using the multiplatform Ktor client.
- Add Ktor & Pick Platform Engines
- Your First GET Request
- POST, Headers & Query Params
- +1 more
JSON with kotlinx.serialization
Map API JSON to Kotlin models and back with the multiplatform serializer.
- @Serializable Data Models
- @SerialName & Custom Field Mapping
- Nullable, Default & Optional Fields
- +1 more
The Repository Layer in Shared Code
Combine networking and parsing into a clean repository the apps depend on.
- Define a Repository Interface
- Wrap the API Behind the Repository
- Map DTOs to Domain Models
- +1 more
Local Storage with SQLDelight
Persist data in a type-safe SQLite database shared across platforms.
- Add SQLDelight & Write .sq Schemas
- Platform SqlDriver Setup
- Insert, Query & Update Rows
- +1 more
Key-Value Storage with Multiplatform Settings
Store preferences and small values portably across Android and iOS.
- Why a Settings Abstraction
- Read & Write Typed Values
- Defaults & Clearing Keys
- +1 more
Dependency Injection with Koin
Wire repositories, clients and use cases together with shared Koin modules.
- Declare a Shared Koin Module
- single vs factory Scopes
- Start Koin on Android & iOS
- +1 more
Shared ViewModels for Both Apps
Build presentation logic once and drive both Compose and SwiftUI from it.
- A Cross-Platform ViewModel Base
- Expose UI State as StateFlow
- Handle User Intents & Actions
- +1 more
Error Handling Across Platforms
Model failures in shared code and surface friendly messages on each app.
- A Sealed Result Type
- Catch Network & Parsing Errors
- Map Errors to UI Messages
- +1 more
Compose Multiplatform: Shared UI
Write one Compose UI that renders on Android, iOS and desktop.
- Enable Compose Multiplatform
- Layouts, Modifiers & Theming
- State & Recomposition in Shared UI
- +1 more
Navigation & Resources in Compose MP
Add multi-screen navigation and shared images, fonts and strings.
- Navigate Between Shared Screens
- Pass Arguments & Deep Links
- Shared Images, Fonts & Strings
- +1 more
Call Shared Code from Swift Like a Pro
Master the Kotlin-to-Swift bridge so iOS devs enjoy your API.
- How Kotlin Maps to Objective-C
- Suspend Functions as Swift async
- Collect Flows from Swift
- +1 more
Interop with Native iOS Frameworks
Call Apple APIs and your own native code directly from Kotlin/Native.
- Use Apple Frameworks from Kotlin
- Memory & ARC in Kotlin/Native
- cinterop with C Libraries
- +1 more
Platform-Specific APIs Done Right
Access device capabilities per platform behind one clean shared interface.
- Design a Capability Interface
- expect/actual for Device Info
- File System & Paths per Platform
- +1 more
Concurrency & Threading Models
Reason about Kotlin/Native memory and threading to avoid subtle crashes.
- The New Memory Manager Explained
- Main vs Background on iOS
- Mutable State & Race Conditions
- +1 more
Test Your Shared Code
Write fast, reliable tests that run in commonTest and on every target.
- kotlin.test in commonTest
- Test suspend Functions & Flows
- Fake the Ktor Client & Repos
- +1 more
Architect a Real KMP App
Assemble layers, modules and boundaries into a maintainable production architecture.
- Layered Architecture for KMP
- Use Cases & Domain Boundaries
- Split Shared Code into Modules
- +1 more
Publish a Kotlin Multiplatform Library
Package and release a reusable KMP library for other teams to consume.
- Configure maven-publish for KMP
- Ship an XCFramework for iOS
- Versioning & API Stability
- +1 more
Performance, CI/CD & Shipping KMP
Profile, automate and release a KMP app confidently to both stores.
- Speed Up Gradle & iOS Builds
- Profile & Shrink the iOS Framework
- CI Pipelines for Android & iOS
- +1 more
Frequently Asked Questions
Is the Kotlin Multiplatform Academy course free?
Yes. You can start the Kotlin Multiplatform Academy course for free and complete its interactive lessons at no cost. An optional PRO subscription unlocks advanced AI tools and a shareable certificate.
Do I need prior experience to learn KOTLIN?
No. The course begins with the fundamentals and gradually moves to more advanced topics, so you can start even with no prior KOTLIN experience.
How will I learn KOTLIN on CoddyKit?
You learn by doing. Short interactive lessons pair a clear explanation with a hands-on coding exercise that runs in real time, and a 24/7 AI tutor gives personalized help whenever you get stuck.
Do I get a certificate for completing Kotlin Multiplatform Academy?
Yes. PRO learners can take an exam and earn a shareable certificate of completion with a verifiable code for the Kotlin Multiplatform Academy course.
Can I learn KOTLIN on my phone?
Yes. CoddyKit is available on the web and as native iOS and Android apps, so you can learn KOTLIN on any device and your progress syncs across them.
Start Kotlin Multiplatform Academy Now
Join thousands of learners mastering programming with AI-powered lessons.