This is a Slack clone app built with Jetpack Compose and Stream Chat SDK for Compose following clean architecture principles.
The purpose of this repository is to demonstrate below:
- Implementing entire UI elements with Jetpack Compose.
- Implementation of Android architecture components with Jetpack libraries such as Hilt.
- Performing background tasks with Kotlin Coroutines.
- Integrating chat systems with Stream Chat SDK for real-time event handling and authentication.
If you're interested in additional repositories that were built with Jetpack Compose and Stream SDK, check out the repositories below:
- WhatsApp Clone Compose: π± WhatsApp clone project demonstrates modern Android development built with Jetpack Compose and Stream Chat SDK for Compose.
- Stream Draw Android: π₯ Stream Draw is a real-time multiplayer drawing & chat game app built entirely with Jetpack Compose.
- Facebook Messenger Clone: Facebook Messenger clone using Stream SDK & Jetpack Compose.
Go to the Releases to download the latest APK.
![](https://user-images.githubusercontent.com/24237865/138428440-b92e5fb7-89f8-41aa-96b1-71a5486c5849.png)
Stream Slack Android clone was built with Stream Chat SDK for Compose to implement messaging systems. If youβre interested in adding powerful In-App Messaging to your app, check out the Android Chat Messaging Tutorial!
- Minimum SDK level 21.
- 100% Jetpack Compose based + Coroutines + Flow for asynchronous.
- Compose Chat SDK for Messaging: The Jetpack Compose Chat Messaging SDK is built on a low-level chat client and provides modular, customizable Compose UI components that you can easily drop into your app.
- Jetpack
- Compose: Androidβs modern toolkit for building native UI.
- Lifecycle: Observe lifecycle changes.
- ViewModel: UI related data holder and lifecycle aware.
- Room Persistence: Constructs Database by providing an abstraction layer over SQLite to allow fluent database access.
- Paging3: Loads and displays pages of data from a larger dataset from local storage or over network.
- App Startup: Provides a straightforward, performant way to initialize components at application startup.
- Hilt: Dependency Injection.
- Landscapist-Glide: Jetpack Compose image loading library that fetches and displays network images with Glide, Coil, and Fresco.
- Retrofit2 & OkHttp3: Construct the REST APIs and paging network data.
- Timber: A logger with a small, extensible API which provides utility.
Stream Slack Clone Android follows the principles of Clean Architecture with Android Architecture Components.
- User Interface Layer: The responsibility of the UI layer is to render the application data on the screen. UI elements must be updated whenever the application data changes from user interaction or external communication with the network and database.
- Presentation Layer: The responsibility of the Presentation layer is to interact and notify data changes between UI layers and Domain layers. It also holds and restores data in configuration changes.
- Domain Layer: The domain layer is responsible for abstracting complex business logic and improving its reusability. This layer transforms the complex application data into suitable types for Presentation layers and groups similar business logic as a single feature.
- Data Layer: The responsibility of the data layer is to deliver the result of business logic executions, such as CRUD operations (Create, Retrieve, Update, Delete β all system events). This layer can be designed with various strategies, like Repository or DataSource, for dividing the responsibility of executions.
For more information, check out the The 2022 Android Developer Roadmap: Part 3, Architecture Components.
Check out Bringing Anmol Vermaβs Jetpack Compose Slack Project to Life for learning the details of how to integrate chat features into the Slack clone project.
All copyrights of the resources, logo, branding, content, concepts, and phrases that are used in this open-source project belong to Slack. Also, this project was forked from SlackAndroidClone and the original credit goes to Anmol92verma.
![](https://user-images.githubusercontent.com/24237865/138428440-b92e5fb7-89f8-41aa-96b1-71a5486c5849.png)
Support it by joining stargazers for this repository. β
Also, follow maintainers on GitHub for our next creations! π€©
Copyright 2022 Stream.IO, Inc. All Rights Reserved.
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.