Skip to content

📱 A chat demo app built with Jetpack Compose and Stream Chat SDK following clean architecture principles.

License

Notifications You must be signed in to change notification settings

pushpalroymm/stream-slack-clone-android

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cover

License API Build Status

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.

Download

Go to the Releases to download the latest APK.

🛥 Stream Chat SDK

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!

📷 Previews

drawing drawing drawing drawing drawing drawing drawing drawing drawing

🛠 Tech Sacks & Open Source Libraries

  • 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.

🏛️ Architecture

Stream Slack Clone Android follows the principles of Clean Architecture with Android Architecture Components.

Architecture's layers & boundaries:

  • 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.

✍️ Blog Post and Tutorial Video

We're planning to release a blog post and tutorial videos for the Stream Slack clone project. If you'd like to get notified as we release future posts, join the watchers on GitHub or follow Stream on Twitter. You can also follow the author of this repository on GitHub.

💯 MAD Score

summary

Copyrights & Credits

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.

Find this repository useful? 💙

Support it by joining stargazers for this repository. ⭐
Also, follow maintainers on GitHub for our next creations! 🤩

License

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.

About

📱 A chat demo app built with Jetpack Compose and Stream Chat SDK following clean architecture principles.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Kotlin 99.9%
  • Shell 0.1%