Writing Slack in Jetpack Compose and Kotlin MultiPlatform

Anmol Verma
2 min readNov 2, 2022

--

Fascinated by the emerging trends coming in Android and Jetpack Compose, I decided to start experimenting with it and wrote the compose UI for Slack and it helped a lot of developers out there getting to know about various use cases with JetpackCompose. Here’s the source code for it,

And as soon as Jetbrains released Jetpack Compose for MultiPlatform, I decided to port my Slack Android Clone to MultiPlatform with responsive UI! So my latest repository came into existence which is a multi-platform project and this blog post is about the KMP version of Slack Clone!

Here’s a sneak peak of what it looks like on a Samsung Tab S8 tablet.

High Level Design of this project!

The source code on GitHub.

This project supports the following platforms

  1. Desktop(jvm)
  2. Android
  3. iOS

It is not just a UI clone but supports backend with gRPC-Kotlin and local database with SqlDelight.

Link to the Kotlin gRPC server.

Features added till now.

  1. Authentication(JWT based) and Creating new workspace.
  2. Login into Desktop app via QR code scan.
  3. Creating channels, Inviting into channels.
  4. Sending messages to 1–1 and private channels.
  5. Listing Channel members.
  6. Setup and wrote Unit Tests for common code!
  7. End to End Encryption with Push notifications
  8. Compose UI Tests Added for Android.

TODOs:

  1. Updating User status and Emoji
  2. Sending and receiving files
  3. WebRTC for Audio/Video calls.

Will continue to update this article as I make more progress, I hope i can learn from you people and share my experiences with this experimental project!

Thank you for reading! 🙇🏻‍♂️💚

--

--

Anmol Verma

Old Seeker, New to Fatherhood, Developer 👨‍💻 with 10 years experience, switching btwn Kotlin ↔️ dart 😬, Dreaming of spaceships 🛸 and extraterrestrials 👽