Slack android clone with Jetpack Compose!
This is a jetpack compose sample app written in Kotlin following clean architecture principles.
The purpose of this app to showcase:
Screenshots | In Progress |
---|---|
What | How |
---|---|
🎭 User Interface (Android) | Jetpack Compose |
🏗 Architecture | Clean |
💉 DI (Android) | Hilt |
🌊 Async | Coroutines + Flow |
🌐 Networking | Retrofit |
📄 Parsing | KotlinX |
SlackClone follows the principles of Clean Architecture with Android Architecture Components.
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
Files are suffixed with be defined Class types.
LoginVM
LoginUseCase
LoginRemoteSource
, LoginLocalSource
LoginRepo
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.