Slack Compose Multiplatform Application

March 8, 2024 ยท View on GitHub

Component 1

๐Ÿ—๏ธ๏ธ Built with ๐Ÿ’ช๐Ÿผ using Jetpack Compose And Kotlin Multiplatform ๐Ÿ˜

WhatHow
๐ŸŽญ User Interface (Android,Desktop,iOS)Jetpack Compose JB!
๐Ÿ— ArchitectureDecompose + Clean Architecture
๐Ÿ’‰ DI (Android)Koin
๐ŸŒŠ AsyncCoroutines + Flow
๐ŸŒ NetworkinggRPC
๐Ÿ“„ Paginationmoko-paging
๐Ÿช” Lintktlint gradle plugin , ktlint Pinterest
๐Ÿคฟ Testing with TurbineTurbine

Before running!

  • check your system with KDoctor
  • install JDK 17 on your machine
  • add local.properties file to the project root and set a path to Android SDK there

Android

To run the application on android device/emulator:

  • open project in Android Studio and run imported android run configuration

To build the application bundle:

  • run ./gradlew :composeApp:assembleDebug
  • find .apk file in composeApp/build/outputs/apk/debug/composeApp-debug.apk

Desktop

Run the desktop application: ./gradlew :composeApp:run

iOS

To run the application on iPhone device/simulator:

Browser

Make sure to run envoy! Run the browser application: ./gradlew :composeApp:jsBrowserDevelopmentRun

Prerequisities

  1. Fetch grpc-KMP submodule and install :plugin and :grpc-multiplatform-lib to mavenLocal()
  2. Setup env variables for the grpc-server with firebase creds and email info using setup.sh in the root of this project
  3. Run the server

The project supports android, compose iOS and jvm platform, make sure you match the ip:addr in the class GrpcCalls() once you run the slackserver locally!

Architecture

Slack Multiplatform (3)

Video Demo with Andorid, iOS and JVM Desktop

https://user-images.githubusercontent.com/4393101/229371347-1cebf7bf-384d-4ec0-bfcf-19b1e34e6290.mp4

UI Tests introduced with commoncomposeui module

https://github.com/oianmol/SlackComposeMultiplatform/assets/4393101/05a37ed9-c27c-41dd-b493-26cb55506095

License

Copyright 2024 Anmol Verma

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.