• Stars
    star
    427
  • Rank 101,680 (Top 3 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created almost 3 years ago
  • Updated almost 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Slack android clone with Jetpack Compose!

Slack Android Clone with Compose is now in Kotlin Multiplatform!

Status: Active Development happening here https://github.com/oianmol/SlackComposeMultiplatform

This is a jetpack compose sample app written in Kotlin following clean architecture principles.

The purpose of this app to showcase:

  • Implementation of Jetpack Android Architecture components with Dagger Android and jetpack compose
  • Creation of proper components and Subcomponents using Dagger Android and their injection into Activity, Compose Views, View Models and Helper Classes
  • Performing background task with Kotlin Coroutines

Screenshots

Screenshots In Progress
drawing drawing
drawing drawing
drawing drawing
drawing drawing
drawing drawing
drawing drawing
drawing
drawing drawing

TODOs and questions to self

  • Rewrite the Colors and light/dark mode compatibility!
  • Should we have separate theme for each UI module ?
  • How to handle dynamic theme colors ?

🏗️️ Built with ❤️ using Jetpack Compose 😁

What How
🎭 User Interface (Android) Jetpack Compose
🏗 Architecture Clean
💉 DI (Android) Hilt
🌊 Async Coroutines + Flow
🌐 Networking Retrofit
📄 Parsing KotlinX

Languages, libraries and tools used

Architecture

SlackClone follows the principles of Clean Architecture with Android Architecture Components.

Architecture's layers & boundaries:

UI Layer contains UI (Activities, Composables, Fragments) that are coordinated by _ ViewModels which execute 1 or multiple UseCases._ Presentation Layer depends on Domain Layer.

Domain Layer is the most INNER part of the circle (no dependencies with other layers) and it contains Entities, Use cases & Repository Interfaces. Use cases combine data from 1 or multiple Repository Interfaces.

Data Layer contains Repository Implementations and 1 or multiple Data Sources. Repositories are responsible to coordinate data from the different Data Sources. Data Layer depends on Domain Layer.

Notes: Mapping between response models and transformed models will happen via extension functions defined in transformed model file

When writing a new ui module

  • First, Create a new android library module
  • Make sure to copy build.gradle.kts from other ui module and paste it in your ui-module
  • We need one fragment to host the composables, this fragment will be added to main nav graph.
  • the routing within compose world is handled with Compose Navigator
  • and to move out of one ui module you need to use the fragment navigator!

Conventions:

Files are suffixed with be defined Class types.

  • ViewModels are suffixed with VM. Ex: LoginVM
  • UseCases are suffixed with UseCase. Ex: LoginUseCase
  • Sources are suffixed with Source. Ex: LoginRemoteSource, LoginLocalSource
  • Repositories are suffixed with Repo. Ex: LoginRepo

Conclusion

This project can be used as a template for new apps. This project is continually evolving to integrate other libraries and techniques to keep it up to date.

More Repositories

1

ComposeAnimationsPlayground

Jetpack compose animations playground
Kotlin
325
star
2

SlackComposeMultiplatform

A Kotlin Multiplatform Slack clone using gRPC
Kotlin
264
star
3

DiscordJetpackCompose

A Jetpack compose clone for Discord Android Client
Kotlin
197
star
4

jettwitter

Kotlin
29
star
5

GoogleCalendarAndroidClone

A google calendar clone in jetpack compose.
Kotlin
22
star
6

flutter_slack

A slack clone in flutter!
Dart
20
star
7

ChameleonCompose

A better Composable for Jetpack Compose
Kotlin
14
star
8

capillary-kmp

A Kotlin Multiplatform library to support end to end encryption.
Kotlin
13
star
9

slack_multiplatform_grpc_server

Kotlin
12
star
10

JetCalendarView

Kotlin
11
star
11

OpenTestLabAndroid

A self hosted Android test lab to run android automation tests. A possible firebase alternative
Kotlin
11
star
12

FlutterGithubClient

A Flutter Github client
Dart
6
star
13

duolingo-design-system-jetpackcompose

A Design system clone for Duolingo in jetpack compose
Kotlin
5
star
14

CurrencyConverter

Kotlin
4
star
15

z490_opencore_msi

Open core for macOS big sur v0.6.2
4
star
16

iTunesCompose

A Jetpack compose playground project
Kotlin
4
star
17

PublicApiKotlinSDK

Writing Public APIs for your feature developers
Kotlin
3
star
18

slack_multiplatform_generate_protos

Kotlin
3
star
19

slack_multiplatform_protos

Kotlin
3
star
20

KMarkdown

An attempt to parse markdown and use native compose views to load markdown content.
Kotlin
3
star
21

kmpcalendar

A calendar library and views written for kotlin multiplatform
Kotlin
2
star
22

FlutterBlocWithTests

A minimal project using bloc, a jokes api , bloc test and widget tests
C++
2
star
23

CalibreKMP

An attempt to create the opensource clone for the Calibre APP in Kotlin multiplatform
Kotlin
2
star
24

adm_android

an advanced download manager for Android using coroutines.
Kotlin
2
star
25

slackdata

A Multiplatform library which provides data for slack multiplatform clone
Kotlin
2
star
26

CalendlyFlutterClone

A Calendly clone in flutter !
Dart
1
star
27

emploektor.baseio.dev

Kotlin
1
star
28

slack_kotlin_grpc_proto

1
star
29

FlutterTemplate

Dart
1
star
30

TitanicTfLite

A tensorflow lite model for titanic dataset predicting probability of being saved !
Python
1
star
31

WhatsAppCloneSwiftUI

A clone for Whatsapp UI using SwiftUI
Swift
1
star
32

slack_multiplatform_client_data_lib

Kotlin
1
star
33

InvoiceBilllingSystem

A invoice billing system in Kotlin and TornadoFX
Kotlin
1
star
34

flutter_web_cv

Dart
1
star