Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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: about 15 hours ago
JSON representation

Kotlin TEA/ELM implementation with first class android support

Awesome Lists containing this project

README

        

![Elmslie](https://user-images.githubusercontent.com/16104123/104534649-b5defa80-5625-11eb-98b6-d761623f8964.jpeg)
[![](https://jitpack.io/v/diklimchuk/test.svg)](https://jitpack.io/#diklimchuk/test)

[![Maven Central Version](https://img.shields.io/maven-central/v/money.vivid.elmslie/elmslie-core)](https://central.sonatype.com/artifact/money.vivid.elmslie/elmslie-core)
[![License badge](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](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/))