https://github.com/vivid-money/elmslie
Kotlin TEA/ELM implementation with first class android support
https://github.com/vivid-money/elmslie
android android-library elm elm-architecture functional-reactive-programming java java-8 kotlin-android mvi mvi-android mvi-architecture rxandroid state-management
Last synced: 3 months ago
JSON representation
Kotlin TEA/ELM implementation with first class android support
- Host: GitHub
- URL: https://github.com/vivid-money/elmslie
- Owner: vivid-money
- License: apache-2.0
- Created: 2021-01-12T11:48:30.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2025-01-10T12:30:05.000Z (5 months ago)
- Last Synced: 2025-03-29T07:04:28.867Z (3 months ago)
- Topics: android, android-library, elm, elm-architecture, functional-reactive-programming, java, java-8, kotlin-android, mvi, mvi-android, mvi-architecture, rxandroid, state-management
- Language: Kotlin
- Homepage: https://github.com/vivid-money/elmslie
- Size: 919 KB
- Stars: 116
- Watchers: 8
- Forks: 14
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

[](https://jitpack.io/#diklimchuk/test)[](https://central.sonatype.com/artifact/money.vivid.elmslie/elmslie-core)
[](https://opensource.org/licenses/Apache-2.0)Elmslie is a minimalistic reactive implementation of TEA/ELM written in kotlin with java support.
Named after [George Grant Elmslie](https://en.wikipedia.org/wiki/George_Grant_Elmslie), a Scottish-born architect.## Why?
- **Scalable and Reusable**: Built-in support for nesting components
- **Multiplatform**: Written with pure Kotlin and Coroutines, supports KMP (Android, iOS, JS)
- **Single immutable state**: Simplify state management
- **UDF**: Say no to spaghetti code with Unidirectional Data Flow## Documentation
This is a visual representation of the architecture:
![]()
For more info head to the [wiki](https://github.com/vivid-money/elmslie/wiki)
## Samples
Samples are available [here](https://github.com/vivid-money/elmslie/tree/publish-elmslie-3.0/samples)
- Basic loader for android: [link](https://github.com/vivid-money/elmslie/tree/publish-elmslie-3.0/samples/coroutines-loader)
- Pure kotlin calculator: [link](https://github.com/vivid-money/elmslie/tree/publish-elmslie-3.0/samples/kotlin-calculator)## Download
Library is distributed through Maven Central#### Add repository in the root build.gradle
```kotlin
allprojects {
repositories {
mavenCentral()
}
}
```#### Add required modules:
- Core - for pure kotlin ELM implementation`implementation 'money.vivid.elmslie:elmslie-core:{latest-version}'`
- Android - for android apps only, simplifies lifecycle handling
`implementation 'money.vivid.elmslie:elmslie-android:{latest-version}'`
## Related articles
- Why did we select ELM? ([Russian](https://habr.com/ru/company/vivid_money/blog/534386/), [English](https://medium.com/@klimchuk.daniil/how-we-chose-presentation-layer-architecture-and-didnt-regret-it-bc694cab3e80))
- What is ELM architecture? ([Russian](https://habr.com/ru/company/vivid_money/blog/550932/))
- How to use our library? ([Russian](https://habr.com/ru/company/vivid_money/blog/553232/))