One Language. One Codebase. 5 Apps.

Master Kotlin & Compose Multiplatform development by building an industry-scale multi-module chat app in over 170 video lessons

100% responsive custom UI
Offline-first
Real-time communication
Authentication
In collaboration with

After This Course, You Will…

Confidently build apps for 5 platforms

With just Kotlin, you will be able to build five production-grade Kotlin Multiplatform apps – targeting Android, iOS, Windows, MacOS & Linux.

Understand advanced KMP architecture

These courses not only focus on building a solid software architecture from scratch, but teaching you in a way that you truly understand why architectural decisions are made the way they are.

Truly understand the technologies that matter in the industry

The chat app you’ll learn to build intentionally includes all those technologies that truly matter for the vast majority of apps in the industry.

Chirp

Build a 100% Responsive Chat App From Scratch

This is Chirp – a multi-module chat app you’ll learn to build with Kotlin & Compose Multiplatform

Covers Everything the Industry Demands.

Philipp Lackner’s quality standard is to not only cover what you need in the real world, but also involve you into his own thought process behind every single of 20,000 lines of Kotlin code.

Software Architecture

Learn about the fundamentals of app development architecture and find out how you can come up with your own patterns.

KMP & CMP Internals

Truly understand how KMP & CMP work under the hood to be able to better understand what you can do when things go wrong.

Multi-Module Architecture With Gradle

You’ll still have to fight Gradle – but after finishing this course bundle you’ll know how to do so without giving up.

100% Responsive UI

Transform professional Figma mockups into a reusable custom design system in Compose Multiplatform – 100% responsive with light & dark theme.

Networking

Master making HTTP requests from the client as well as properly handling these incoming requests on the server side.

Authentication & Session Management

Understand how you can implement a registration & login system with forgot password and email verification functionality.

Offline-First Development

Implement a local database with multiple tables and relations to make the entire client app work in offline-mode.

WebSockets

Establish a real-time connection between server & client to notify each other about new chat mesages and other important updates instantly.

Deeplinking

Learn to let clicks on URLs open your client app directly from the browser – very useful for email verification or reset password links.

Photo Picking & Uploads

Implement native photo pickers in the client apps and upload these to the server.
Server side, you will truly understand efficient remote file storage.

Push Notifications

Use the Firebase Admin SDK to send push notifications to Android & iOS devices when new chat messages arrive.
On all desktop platforms, you’ll implement native local notifications.

Pagination

Both server and client will follow a pagination approach to only load the data the client actually needs to display.

These 185 Videos Are Waiting for You

Get Instant Access to 34+ Hours of Exclusive Video Material

1. Introduction

  • Prerequisites
  • The Right Order to Watch
  • How You Get the Most Out of This Course
  • What We’ll Build

2. Kotlin Multiplatform Theory

  • What is Kotlin Multiplatform?
  • What is Compose Multiplatform?
  • KMP & Native Apps
  • How KMP Compiles Down to Targets
  • How CMP Works Under the Hood
  • KMP vs. Flutter vs. React Native

3. Architecture Theory

  • Separation of Concerns
  • What is a Module?
  • Kotlin Multiplatform Modules
  • Advantages of Multi-Module Architecture
  • Multi-Module Architecture Isn’t a General Best Practice
  • Which Modularization Strategy to Choose?
  • Finding the Sweet Spot Between Modular Design & Low Complexity
  • Use Cases – yes or no?
  • Single-Responsibility Principle
  • Open-Closed Principle Principle
  • Liskov-Substitution Principle
  • Interface-Segregation Principle
  • Dependency-Inversion Principle

4. Gradle & Multi-Module Architecture Setup

  • Project Setup
  • KMP Project Roundtrip
  • Gradle Challenges in a Multi-Module Project
  • Version Catalog Setup
  • Creating the KMP Module Structure
  • Defining the Module Relations
  • Creating the build-logic Module
  • Creating the build-logic Module

Creating the Convention Plugins

  • Android Application Convention Plugin
  • Android Application Compose Convention Plugin
  • CMP Application Convention Plugin
  • KMP Library Convention Plugin
  • CMP Feature Convention Plugin
  • BuildKonfig Convention Plugin
  • Room Convention Plugin

5. Setting Up Project-Wide Utility

  • Result Wrapper
  • String Resource Management
  • Observing One-Time Events In Compose
  • Material3 Theme Setup
  • HttpClient Result Handling
  • HttpClient Network Call Utility
  • HttpClienFactory
  • Device Configuration for Responsive UIs

6. Authentication Feature

Auth Design System

  • Core Buttons
  • Icon Buttons
  • Floating Action Buttons
  • Normal Text Fields
  • Password Text Fields
  • Core Surface
  • Form Adaptive Layout
  • Adaptive Result Layout
  • Simple Success Layout
  • Snackbar Scaffold

Registering Accounts & Email Verification

  • Register Screen Skeleton
  • Register Screen UI
  • Validate Register Form Fields
  • Register API Endpoints
  • Handling Registration in RegisterViewModel
  • Koin DI Setup
  • Fixing Small Register Errors
  • Register Success Screen UI
  • Navigation Setup
  • Resending Verification Emails
  • Email Verification Screen UI
  • Verifying Emails
  • Deep Linking to Verification Screen

Logging in

  • Login Screen UI
  • Logging In Users
  • Storing Sessions
  • Token Refresh Mechanism
  • Splash Screen Setup on Android
  • Splash Screen Setup on iOS
  • Staying Logged In Functionality
  • Handling Expired Sessions

Forgot & Reset Password Functionality

  • Forgot Password Screen UI
  • Triggering Forgot Password Emails
  • Reset Password Screen UI
  • Resetting Passwords

Small Improvements & Fixes

  • Clearing Focus on Tap
  • Fixing Window Insets

7. Chat Feature

Chat Design System

  • Chat Bubble UI
  • Multi-Line Layout
  • Avatar Photo UI
  • Stacked Avatars UI
  • Confirmation Dialog
  • Bottom Sheet Wrapper
  • Dialog Content Wrapper
  • Adaptive Dialog Sheet Layout

Creating Chats

  • Implementing the Chat Domain Models
  • Dialog-Scoped ViewModels
  • Chat List Detail Adaptive Layout
  • Create Chat Adaptive Dialog
  • Small UI Fixes
  • Searching & Adding Participants
  • Create Chat Logic

Chat List Screen UI

  • Chat List Item UI
  • Chat List Header UI
  • Chat List Screen UI

Chat Detail Screen UI

  • Chat Message List Item UI
  • Chat Detail Header UI
  • Date Chip UI
  • Message Box UI
  • Message List Content UI
  • Putting It All Together

Multi-Table Chat Database Setup

  • Creating the DB Schema
  • Chat DAO
  • Chat Message DAO
  • Chat Participant DAO
  • Chat & Participant Relation DAO
  • Last Message Database View
  • Wiring It All Together

Chat Management

  • Fetching & Caching Chats In DB
  • Fetching a Single Chat
  • Small Chat UI Fixes
  • Caching Created Chats
  • Leaving a Chat
  • Manage Chat Adaptive Dialog
  • Adding Participants to a Chat
  • Empty Chat Pane Fixes

Web Socket Connection

  • App Lifecycle Observer
  • Connectivity Observer
  • Connection Error Handler
  • Connection Retry Handler
  • Web Socket Connector
  • Sending Web Socket Messages
  • Parsing Received Web Socket Messages

Chat Message Management

  • Fetching & Caching Messages
  • Sending Messages
  • Small Message Fixes
  • Retrying Failed Deliveries
  • Deleting Messages
  • Building the Paginator
  • Paginating Chat Messages
  • Pagination Scroll Listener & Retries
  • Grouping Messages By Date
  • Maintaining the Message Date Banner

Profile Management

  • Profile Adaptive Dialog UI
  • Changing the Password
  • Displaying User Data
  • Image Picking on Android
  • Image Picking on iOS
  • Uploading the Picked Image
  • Deleting the Profile Picture

Push Notifications

  • Requesting Notification Permission
  • Push Notifications on Android
  • Push Notifications on iOS

Logging Out

  • Logging Out

Final Bug Fixes

  • Message Field Improvements

8. Desktop App (Optional Add-On)

Introduction

  • Demo of the Final App
  • Native Desktop Development vs. JVM
  • Configuring the Desktop Target

Features

  • Persistence on Desktop
  • Smart Source Set Management for JVM
  • Monitoring Connectivity
  • File Picking and Drag & Drop
  • Window Management Fundamentals
  • Menu Bar & Keyboard Shortcuts
  • Creating the Tray Icon & Theme Preference Menu
  • Implement Desktop Notifications
  • Keyboard Shortcut for Sending Messages
  • Deep Linking Preparations

Distribution

  • Virtual Machine Setup
  • Conveyor Installation
  • Conveyor Setup & MacOS Distribution
  • Windows Distribution
  • Linux Distribution

1. Introduction

  • Prerequisites
  • The Right Order to Watch
  • How You Get the Most Out of This Course
  • What We’ll Build

2. Kotlin Multiplatform Theory

  • What is Kotlin Multiplatform?
  • What is Compose Multiplatform?
  • KMP & Native Apps
  • How KMP Compiles Down to Targets
  • How CMP Works Under the Hood
  • KMP vs. Flutter vs. React Native

3. Architecture Theory

  • Separation of Concerns
  • What is a Module?
  • Kotlin Multiplatform Modules
  • Advantages of Multi-Module Architecture
  • Multi-Module Architecture Isn’t a General Best Practice
  • Which Modularization Strategy to Choose?
  • Finding the Sweet Spot Between Modular Design & Low Complexity
  • Use Cases – yes or no?
  • Single-Responsibility Principle
  • Open-Closed Principle Principle
  • Liskov-Substitution Principle
  • Interface-Segregation Principle
  • Dependency-Inversion Principle

4. Gradle & Multi-Module Architecture Setup

  • Project Setup
  • KMP Project Roundtrip
  • Gradle Challenges in a Multi-Module Project
  • Version Catalog Setup
  • Creating the KMP Module Structure
  • Defining the Module Relations
  • Creating the build-logic Module
  • Creating the build-logic Module

Creating the Convention Plugins

  • Android Application Convention Plugin
  • Android Application Compose Convention Plugin
  • CMP Application Convention Plugin
  • KMP Library Convention Plugin
  • CMP Feature Convention Plugin
  • BuildKonfig Convention Plugin
  • Room Convention Plugin

5. Setting Up Project-Wide Utility

  • Result Wrapper
  • String Resource Management
  • Observing One-Time Events In Compose
  • Material3 Theme Setup
  • HttpClient Result Handling
  • HttpClient Network Call Utility
  • HttpClienFactory
  • Device Configuration for Responsive UIs

6. Authentication Feature

Auth Design System

  • Core Buttons
  • Icon Buttons
  • Floating Action Buttons
  • Normal Text Fields
  • Password Text Fields
  • Core Surface
  • Form Adaptive Layout
  • Adaptive Result Layout
  • Simple Success Layout
  • Snackbar Scaffold

Registering Accounts & Email Verification

  • Register Screen Skeleton
  • Register Screen UI
  • Validate Register Form Fields
  • Register API Endpoints
  • Handling Registration in RegisterViewModel
  • Koin DI Setup
  • Fixing Small Register Errors
  • Register Success Screen UI
  • Navigation Setup
  • Resending Verification Emails
  • Email Verification Screen UI
  • Verifying Emails
  • Deep Linking to Verification Screen

Logging in

  • Login Screen UI
  • Logging In Users
  • Storing Sessions
  • Token Refresh Mechanism
  • Splash Screen Setup on Android
  • Splash Screen Setup on iOS
  • Staying Logged In Functionality
  • Handling Expired Sessions

Forgot & Reset Password Functionality

  • Forgot Password Screen UI
  • Triggering Forgot Password Emails
  • Reset Password Screen UI
  • Resetting Passwords

Small Improvements & Fixes

  • Clearing Focus on Tap
  • Fixing Window Insets

7. Chat Feature

Chat Design System

  • Chat Bubble UI
  • Multi-Line Layout
  • Avatar Photo UI
  • Stacked Avatars UI
  • Confirmation Dialog
  • Bottom Sheet Wrapper
  • Dialog Content Wrapper
  • Adaptive Dialog Sheet Layout

Creating Chats

  • Implementing the Chat Domain Models
  • Dialog-Scoped ViewModels
  • Chat List Detail Adaptive Layout
  • Create Chat Adaptive Dialog
  • Small UI Fixes
  • Searching & Adding Participants
  • Create Chat Logic

Chat List Screen UI

  • Chat List Item UI
  • Chat List Header UI
  • Chat List Screen UI

Chat Detail Screen UI

  • Chat Message List Item UI
  • Chat Detail Header UI
  • Date Chip UI
  • Message Box UI
  • Message List Content UI
  • Putting It All Together

Multi-Table Chat Database Setup

  • Creating the DB Schema
  • Chat DAO
  • Chat Message DAO
  • Chat Participant DAO
  • Chat & Participant Relation DAO
  • Last Message Database View
  • Wiring It All Together

Chat Management

  • Fetching & Caching Chats In DB
  • Fetching a Single Chat
  • Small Chat UI Fixes
  • Caching Created Chats
  • Leaving a Chat
  • Manage Chat Adaptive Dialog
  • Adding Participants to a Chat
  • Empty Chat Pane Fixes

Web Socket Connection

  • App Lifecycle Observer
  • Connectivity Observer
  • Connection Error Handler
  • Connection Retry Handler
  • Web Socket Connector
  • Sending Web Socket Messages
  • Parsing Received Web Socket Messages

Chat Message Management

  • Fetching & Caching Messages
  • Sending Messages
  • Small Message Fixes
  • Retrying Failed Deliveries
  • Deleting Messages
  • Building the Paginator
  • Paginating Chat Messages
  • Pagination Scroll Listener & Retries
  • Grouping Messages By Date
  • Maintaining the Message Date Banner

Profile Management

  • Profile Adaptive Dialog UI
  • Changing the Password
  • Displaying User Data
  • Image Picking on Android
  • Image Picking on iOS
  • Uploading the Picked Image
  • Deleting the Profile Picture

Push Notifications

  • Requesting Notification Permission
  • Push Notifications on Android
  • Push Notifications on iOS

Logging Out

  • Logging Out

Final Bug Fixes

  • Message Field Improvements

8. Desktop App (Optional Add-On)

Introduction

  • Demo of the Final App
  • Native Desktop Development vs. JVM
  • Configuring the Desktop Target

Features

  • Persistence on Desktop
  • Smart Source Set Management for JVM
  • Monitoring Connectivity
  • File Picking and Drag & Drop
  • Window Management Fundamentals
  • Menu Bar & Keyboard Shortcuts
  • Creating the Tray Icon & Theme Preference Menu
  • Implement Desktop Notifications
  • Keyboard Shortcut for Sending Messages
  • Deep Linking Preparations

Distribution

  • Virtual Machine Setup
  • Conveyor Installation
  • Conveyor Setup & MacOS Distribution
  • Windows Distribution
  • Linux Distribution

Philipp Lackner has over 14 years of experience in the software field. Over the past years, he built a following of over 250,000 developers on social media who trust his work. With over 20,000 sold copies of his courses and 700h+ spent for teaching Android concepts, he already helped hundreds of thousands people to learn practical skills they can immediately apply.

He has a degree in computer science, however it didn’t go as expected. The amount of theory that was taught in university made him think about a better approach to learn what is really needed in the real world. Over time, Philipp found mentors who taught him exactly that in a practical setting. That was the game changer for his career.

After having worked for dozens of companies around the globe as a consultant, Philipp now wants to teach other mobile developers what really counts for becoming an outstanding developer.

Philipp Lackner has over 14 years of experience in the software field. Over the past years, he built a following of over 250,000 developers on social media who trust his work. With over 20,000 sold copies of his courses and 700h+ spent for teaching Android concepts, he already helped hundreds of thousands people to learn practical skills they can immediately apply.

He has a degree in computer science, however it didn’t go as expected. The amount of theory that was taught in university made him think about a better approach to learn what is really needed in the real world. Over time, Philipp found mentors who taught him exactly that in a practical setting. That was the game changer for his career.

After having worked for dozens of companies around the globe as a consultant, Philipp now wants to teach other mobile developers what really counts for becoming an outstanding developer.

800H+

of Created Kotlin content

15,000+

Enrolled Students

14

Years of Software dev

What People Say About Philipp’s Courses

Pavel learned building apps for his clients thanks to Philipp’s courses

“If it wasn’t for him, I wouldn’t be here today.”

Martin Kiper convinced his interviewers thanks to Philipp’s courses.

“The return of the investment is insane for the courses.”

Rahul Ahuja gained the knowledge needed for an Android job in another country

“What these courses gave me was a push to develop real-world applications rather than doing some proof-of-concept stuff.”

Alon Shlider saved countless hours thanks to Philipp’s courses

“You can try it on your own with the Android docs, but it will take MUCH longer.”

Simon applies concepts learned from Philipp’s courses in an app with 5M downloads

“After just 20min, Philipp was able to answer all my questions.”

Esau has the same position as developers with 2 more years of experience

“Philipp’s courses are really worth what they cost.”

The Full Offer at a Glance

Make a one-time investment for lifetime access to

Building Industry-Level Compose Multiplatform Android & iOS Apps

  • Lifetime access to 170 video lessons spanning over 30h

  • Access to all professionally designed Figma mockups

  • Access to homework & extensions in the Figma design to practice developing more features

  • 12-month access to Chirp API hosted by PL Coding

  • Certificate awarded after completion

+

Building Industry-Level Compose Multiplatform Desktop Apps

Available as an optional add-on

  • Lifetime access to 21 video lessons spanning over 4h

  • Access to all professionally designed Figma mockups

  • Access to homework & extensions in the Figma design to practice developing more features

  • Certificate awarded after completion

Total value: 399 EUR

Launch Deal: 229 EUR

30% PL Coding Early-Bird Discount: -70 EUR

Early Bird Deal: 159 EUR

55h of video material

30-day money-back guarantee

300+ video lessons

Approved by JetBrains

Total value:
399 EUR

Launch Deal:
229 EUR

30% PL Coding Early-Bird Discount:
-70 EUR

Early Bird Deal:
159 EUR

55h of video material

30-day money-back guarantee

300+ video lessons

Approved by JetBrains

30% Extra Discount on ALL Courses & Bundles

Discount already applied in checkout. Only during the launch week of the new Kotlin Full-Stack Developer Bundle.

Day(s)

:

Hour(s)

:

Minute(s)

:

Second(s)

FAQ

What are the prerequisites to take this course?

The prerequisites are understanding basic concepts of the following technologies:

  • Kotlin
  • Jetpack Compose
  • Optional: KMP basics

Even if you don’t yet know the basics of these technologies, the courses will outline a roadmap of free resources from PL Coding to get on a level to proceed with this bundle.

Will I get a certificate on completion?

Yes, after following through the courses, you can take a final quiz that covers the concepts taught in the course. If you pass it, you will be awarded a certificate that proves that you can confidently apply full-stack concepts with Kotlin.

What does "in collaboration with JetBrains" mean?

We’ve collaborated with JetBrains – the makers of Kotlin Multiplatform itself – to create this course. This means the entire course bundle has been reviewed and approved by JetBrains’ KMP developer advocates – those people who fundamentally contributed to the technology itself.

Is there a money back guarantee?

Just as for all of our courses, you get a voluntary 30-day money back guarantee in case you’re not satisfied with the course content.

Do I get lifetime access?

Yes, it’s a one-time investment into your career to keep access to the course and updates in future.