Home

Awesome

Praxis

2022 Hit Refresh! Praxis now loves ❤️ Jetpack Compose

<div align="left"> <a href = "https://developer.android.com/jetpack/androidx/versions/all-channel#may_5_2021"> <img src = "https://img.shields.io/badge/Jetpack%20Compose-1.0.0%20beta08-brightgreen" /> </a> </div> <br>

This is a sample app written in Kotlin following clean architecture principles which uses slack app features as an example.

The purpose of this app to showcase:

Requirements

  1. Android Studio : Arctic Fox | 2020.3.1 3.1 or higher
  2. Android Emulator or Physical android device

Built With 🏗

ToolsLink
🤖 KotlinKotlin
🏛 Architecture ComponentsAndroid Architecture Components
⛓ Data BindingAndroid Data Binding
💉 Dagger HiltDagger Hilt
🌐 RetrofitRetrofit
🚦 OkHttpOkHttp
📄 Gson ParsingGson
🌊 CoroutinesKotlin Coroutines
🏄🏼‍♀️ FlowsFlows

Architecture

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

Architecture's layers & boundaries:

<img src="art/architecture.jpeg" />

Presentation Layer contains UI (Activities & 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

Conventions:

Files are suffixed with be defined Class types.

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.