Writing Slack in Jetpack Compose and Kotlin MultiPlatform
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
- Desktop(jvm)
- Android
- 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.
- Authentication(JWT based) and Creating new workspace.
- Login into Desktop app via QR code scan.
- Creating channels, Inviting into channels.
- Sending messages to 1–1 and private channels.
- Listing Channel members.
- Setup and wrote Unit Tests for common code!
- End to End Encryption with Push notifications
- Compose UI Tests Added for Android.
TODOs:
- Updating User status and Emoji
- Sending and receiving files
- 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! 🙇🏻♂️💚