
Build a fully responsive, cross-platform Android and iOS app with Jetpack Compose and Kotlin Multiplatform, sharing 99% of code for portrait and landscape layouts, with light/dark themes and scalable architecture.
Explore Jetpack Compose, a Kotlin-based declarative UI framework that enables a single UI across Android, iOS, desktop, and web. Discover its history, states, and composable building blocks.
Learn how to preserve state across configuration changes and process death in Jetpack Compose by using remember Saveable, custom savers, and ViewModel for robust state management.
Explore unidirectional data flow in Jetpack Compose by distinguishing state from events and using UI events with data classes to drive one-time actions like snackbar messages and navigation.
State hoisting moves state up to the parent in Jetpack Compose, turning text field components stateless by passing values and on value change handlers.
Explore jetpack compose layouts by using column, row, and box to position and measure child components, with vertical and horizontal arrangements, spacing, and alignment options.
Master modifiers in Jetpack Compose to control layout, styling, and interactions through top-to-bottom order, including background, padding, clickable, ripple, clip, weight, extension-based modifier groups, and scope safety.
Explore remember with a key and derivedStateOf in Jetpack Compose, showing how dependencies trigger recomposition and how derivedStateOf reduces unnecessary recompositions in lazy lists.
Explore slot-based layouts in Jetpack Compose, where scaffolds provide top bar, bottom bar, a floating action button, content slots, and navigation drawer for a consistent UI.
Learn to use @Preview in Jetpack Compose to preview composables in Android Studio. Keep composables stateless and use multi-device previews with configurable name, size, locale, theme, and system interface.
Explore Jetpack Compose's scaffold with top and bottom bars, tabs, and nested components, and learn local composition, including static composition local of and composition local of for authentication state.
Explore how side effects work in Jetpack Compose, including lounge effect, disposable effect, remember coroutine scope, remember updated state, and derived state.
Explore Jetpack Compose animations, learning animated visibility, content transitions, enter and exit effects, and infinite transitions, plus practical use of animated content, size, and lazy list animations.
Jetpack Compose theming defines colors, typography, and shapes for a consistent UI in light and dark themes. Learn to customize Material three expressive tokens and override component colors at runtime.
Here's the link of the repository: https://github.com/stevdza-san/To-Do-CMP
Generate a Kotlin multiplatform project template to share a compose UI across Android and iOS, using a common main and Android/iOS source sets with expect/actual.
Define and manage multiplatform dependencies via a centralized version catalog in Gradle, applying android and ios targets with libraries like Kotlin serialization, navigation tree, and sql delight.
Define a backstack-driven navigation system in a compose app, with home and task destinations, including optional task IDs. Implement a navigator and navigation graph to manage screen transitions.
Set up coin-based dependency injection in a multiplatform compose app, initialize a shared navigator as a singleton, and pass the Android context to common code for Android and iOS.
Define a domain TodoTask data class with a dashless Uuid id and an experimental annotation. Include title, description, isCompleted, createdAt, updatedAt, and a low, medium, high priority.
Export SVG icons and images and convert them to XML for use in Android and iOS. Access these resources through a common util resource object, supporting light and dark themes.
Develop a fake repository to test the home screen, introducing a generic request state sealed class with idle, loading, success, and error, plus a fake data source for tasks.
Develops the home screen with a view model and state flow to display tasks from a fake repository, using a scaffold, top bar, and floating action button for navigation.
Introduces a task screen with a reusable task input section, scaffold layout, and a fixed button that respects keyboard insets. Enables create or update tasks via an id and navigation.
Develop a task screen using a task view model and ui state to load, create, and update tasks with a repository, error handling, and snack bar feedback.
Learn to implement swipeable task cards in a multiplatform app with the Swipeable KMP library, enabling left dismiss for delete and right swipe to mark as completed.
Explore iOS navigation in a multiplatform Kotlin project, building a separate navigation graph for iOS using the navigation tool, with a nav host and nav controller.
Swap the fake repository for the real SQLDelight database by enabling Gradle dependencies, adding a task database, and wiring Android and iOS drivers to use generated SQLDelight APIs.
In this course, you’ll learn how to build a beautiful, production-ready To-Do mobile app for both Android and iOS, from scratch using Jetpack Compose Multiplatform and Kotlin Multiplatform.
- No XML
- No duplicated code
- No outdated practices
Just one shared codebase, written in Kotlin, powering two native mobile apps.
If you’re new to mobile development, or you’ve built Android apps before and want to step into the future this course is designed exactly for you.
Why this course is different
Mobile development has changed. Today, you don’t need separate teams or completely different codebases to build Android and iOS apps.
With Compose Multiplatform + Kotlin Multiplatform, you can:
Share UI and business logic
Build native apps for Android and iOS
Keep your code clean, scalable, and easy to maintain
And that’s exactly what we’ll do step by step.
What you’ll build
Throughout this course, we’ll build a real-world To-Do application that:
Runs natively on Android and iOS
Uses Jetpack Compose / Compose Multiplatform for UI
Stores data locally using a local database
Supports Light & Dark theme out of the box
Is fully responsive in portrait and landscape
Includes smooth animations and polished UI
Follows clean architecture with MVVM
Is scalable, maintainable, and production-ready
This is not a demo app, it’s a solid foundation you can reuse in your own projects.
What you’ll learn
By the end of the course, you will confidently understand:
How Compose Multiplatform works under the hood
How to structure a Kotlin Multiplatform project properly
How composables work, their lifecycle, and recomposition
How to build custom reusable UI components
How to manage state and logic with ViewModels (MVVM)
How to persist data locally in a multiplatform-friendly way
How to handle themes, responsiveness, and animations
How to write clean, readable, and testable code