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

https://github.com/kbiakov/unidirectional-architecture-on-mobile

Dive into :iphone: Unidirectional Architecture!
https://github.com/kbiakov/unidirectional-architecture-on-mobile

android android-architecture architecture elm-architecture ios ios-architecture kotlin model-view-intent model-view-update mvi mvi-clean-architecture redux rxfeedback rxjava swift tea undirectional unidirectional-data-flow unidirectional-dataflow

Last synced: 5 months ago
JSON representation

Dive into :iphone: Unidirectional Architecture!

Awesome Lists containing this project

README

          

# Unidirectional Architecture on :iphone:

## Videos & books

* :clapper: [Unidirectional data flow architectures](https://www.youtube.com/watch?v=1c6XiQsnh_U) and :page_facing_up: [Unidirectional User Interface Architectures](https://staltz.com/unidirectional-user-interface-architectures.html) by [Andre Staltz](https://github.com/staltz)
* :bookmark_tabs: [Reactive apps with Model-View-Intent](http://hannesdorfmann.com/android/mosby3-mvi-1) by [Hannes Dorfmann](https://github.com/sockeqwe)
* :clapper: [Model-View-Intent for Android](https://www.youtube.com/watch?v=PXBXcHQeDLE) _(Droidcon NYC 2017)_ and :page_facing_up: [briefly](https://proandroiddev.com/the-contract-of-the-model-view-intent-architecture-777f95706c1e) by [Benoît Quenaudon](https://github.com/oldergod)
* :clapper: [Model View Intent, Embracing Reactive UI's](https://www.youtube.com/watch?v=8JewfcZl5TQ) _(Droidcon NYC 2017)_ by [Yousuf Haque](https://github.com/yousuf-haque)
* :clapper: [Simple MVI Architecture for Android](https://www.youtube.com/watch?v=A2xyPZyoFUo) _(DevFestMN 2018)_ by [Etienne Caron](https://github.com/kanawish)
* :books: [Introducing Model-View-Intent](https://commonsware.com/AndroidArch/previews/introducing-model-view-intent) (_[Android's Architecture Components](https://commonsware.com/AndroidArch) book_) by [Mark Murphy](https://github.com/commonsguy)
* :books: [MVI-related chapters](https://store.raywenderlich.com/products/advanced-android-app-architecture) (_[Advanced Android App Architecture](https://store.raywenderlich.com/products/advanced-android-app-architecture) book_) by [raywenderlich.com](https://www.raywenderlich.com)
* :clapper: :page_facing_up: [Driving View-State through data](https://academy.realm.io/posts/try-swift-nyc-2017-matt-gallagher-driving-view-state-through-data/) _(Realm.io)_ by [Matt Gallagher](https://github.com/mattgallagher)
* :clapper: :page_facing_up: [Redux-ing UI bugs to Make Native Better](https://academy.realm.io/posts/kau-lee-kase-reduxing-ui-borrowing-from-web/) _(Realm.io)_ by [Christina Lee](https://github.com/christinalee) & [Brandon Kase](https://github.com/bkase)
* :clapper: :page_facing_up: [Modern RxSwift Architectures](https://academy.realm.io/posts/try-swift-nyc-2017-krunoslav-zaher-modern-rxswift-architectures/) _(Realm.io)_ by [Krunoslav Zaher](https://github.com/kzaher)
* :clapper: :ru: [Data-Driven View Controllers](https://www.youtube.com/watch?v=MrFuKB3HY9o) _(DevFest Minsk 2017)_, [Data-driven UI: безграничная власть](https://www.youtube.com/watch?v=tnKeUr5tRUg) _(Mobius 2018)_ by [Alexey Demedeckiy](https://github.com/AlexeyDemedetskiy)
* :clapper: [Managing State with RxJava](https://www.youtube.com/watch?v=0IKHxjkgop4) by [Jake Wharton](https://github.com/JakeWharton)

## Articles

* :page_facing_up: [Unidirectional data flow on Android using Kotlin](https://proandroiddev.com/unidirectional-data-flow-on-android-the-blog-post-part-1-cadcf88c72f5) (Part [1](https://proandroiddev.com/unidirectional-data-flow-on-android-the-blog-post-part-1-cadcf88c72f5), [2](https://proandroiddev.com/unidirectional-data-flow-on-android-the-blog-post-part-2-b8cfedb1265a)) by [Cesar Valiente](https://github.com/CesarValiente)
* :page_facing_up: [Flux Android Architecture Components using Kotlin](https://medium.com/lewisrhine/flux-android-architecture-components-using-kotlin-a1c933ebf883) by [Lewis Rhine](https://github.com/LewisRhine)
* :page_facing_up: [Uni-Directional Architecture on Android Using Realm](https://academy.realm.io/posts/eric-maxwell-uni-directional-architecture-android-using-realm/) _(Realm.io)_ by [Eric Maxwell](https://emaxwell.info/)
* :page_facing_up: [How to make your Views a function of State in Kotlin](https://medium.com/@liviucoman/how-to-make-your-views-a-function-of-state-in-kotlin-f95a3b130cd6)

### MVI
* :page_facing_up: [MVI — another member of the MV* band](https://proandroiddev.com/mvi-a-new-member-of-the-mv-band-6f7f0d23bc8a)
* :page_facing_up: [From MVP to MVI — Model-View-Intent Journey](https://android.jlelse.eu/from-mvp-to-mvi-model-view-intent-journey-part-i-8542f9fe7ef7)
* :page_facing_up: [Build Your own MVI Framework](https://medium.com/appnroll-publication/build-your-own-mvi-framework-a76d72c6e8e7)
* :page_facing_up: [Android MVI explained in MVP terms](https://rongi.github.io/kotlin-blog/rx-presenter.html)
* :page_facing_up: [Presenter as a Function: Reactive MVP for Android Using Kotlin Coroutines](https://rw.co/our-thinking/presenter-as-a-function-reactive-mvp-for-android-using-kotlin-coroutines/)
* :page_facing_up: [MVI beyond state reducers](https://badootech.badoo.com/a-modern-kotlin-based-mvi-architecture-9924e08efab1)
* :page_facing_up: [Building a system of reactive components with Kotlin](https://badootech.badoo.com/building-a-system-of-reactive-components-with-kotlin-ff56981e92cf)
* :page_facing_up: [Android MVI with Jetpack Compose](https://medium.com/swlh/android-mvi-with-jetpack-compose-b0890f5156ac)
* :page_facing_up: [Model-View-Intent & Data Binding](https://proandroiddev.com/model-view-intent-data-binding-39c7a6a6512f)
* :page_facing_up: [Moving to Model-View-Intent (MVI) using ReactorKit on iOS](https://blog.getdoctalk.com/moving-to-model-view-intent-mvi-on-ios-2146e0c07d1c)
* :page_facing_up: [Building MVI apps with Roxie](https://proandroiddev.com/unidirectional-data-flow-with-roxie-bec546c18598)
* :page_facing_up: :ru: [MVIDroid: обзор новой библиотеки MVI (Model-View-Intent)](https://habr.com/post/417763/)
* :bookmark_tabs: [Links related to MVI](https://github.com/CodyEngel/MVI)

### Next steps
* :page_facing_up: [RxJava & State: The Basics](https://tech.instacart.com/rxjava-state-the-basics-f842eaee7ee1)
* :page_facing_up: [Grox: The Art of the State](https://medium.com/groupon-eng/grox-the-art-of-the-state-b5223f48d696)
* :page_facing_up: [iOS Architecture: A State Container based approach](https://jobandtalent.engineering/ios-architecture-an-state-container-based-approach-4f1a9b00b82e)
* :page_facing_up: [Taming state in Android with Elm Architecture and Kotlin](https://proandroiddev.com/taming-state-in-android-with-elm-architecture-and-kotlin-part-1-566caae0f706) (Part [1](https://proandroiddev.com/taming-state-in-android-with-elm-architecture-and-kotlin-part-1-566caae0f706), [2](https://proandroiddev.com/taming-state-in-android-with-elm-architecture-and-kotlin-part-2-c709f75f7596), [3](https://proandroiddev.com/taming-state-in-android-with-elm-architecture-and-kotlin-part-3-f37a7a630ec1)) by [Sergey Grekov](https://github.com/sgrekov)
* :chart_with_upwards_trend: [Elm lifecycle diagram](https://github.com/plaxdan/elm-lifecycle)
* :page_facing_up: [RxRedux](https://freeletics.engineering/2018/08/16/rxredux.html) by [Hannes Dorfmann](https://github.com/sockeqwe)
* :page_facing_up: [Android.apply{ Redux }](https://blog.shazam.com/android-apply-redux-2ad0f7355e0)
* :page_facing_up: [Reactive State Mutations via CQRS](https://arturdryomov.online/posts/reactive-state-mutations/)
* :page_facing_up: [DiffUtil — performant one way data flow with RxJava and Kotlin](https://medium.com/@ZakTaccardi/diffutil-one-way-data-flow-with-rxjava-and-kotlin-6e17f0cdef0c)
* :page_facing_up: [Refactoring RecyclerView adapter to data binding](https://blog.untitledkingdom.com/refactoring-recyclerview-adapter-to-data-binding-5631f239095f)

## Libraries :books:

#### MVI
* :books: [Mosby](https://github.com/sockeqwe/mosby) :fire: by [Hannes Dorfmann](https://github.com/sockeqwe)
* :books: [MVICore](https://github.com/badoo/MVICore) :fire: by [Badoo Tech](https://github.com/badoo)
* :books: [MvRx](https://github.com/airbnb/MvRx) :fire: by [Airbnb](https://github.com/airbnb)
* :books: [Reaktor](https://github.com/floschu/Reaktor) :fire:
* :books: [Kaskade](https://github.com/gumil/Kaskade)
* :books: [Vector](https://github.com/haroldadmin/Vector)
* :books: [android-mvi](https://github.com/memtrip/android-mvi)
* :books: [Reamp](https://github.com/eastbanctechru/Reamp)
#### Redux
* :books: [RxRedux](https://github.com/freeletics/RxRedux) & [CoRedux](https://github.com/freeletics/CoRedux) :fire: by [Hannes Dorfmann](https://github.com/sockeqwe)
* :books: [KUnidirectional](https://github.com/CesarValiente/KUnidirectional) :fire: by [Cesar Valiente](https://github.com/CesarValiente)
* :books: [Roxie](https://github.com/ww-tech/roxie) :fire:
* :books: [Suas-Android](https://github.com/zendesk/Suas-Android) :fire:
* :books: [redux-kotlin](https://github.com/pardom/redux-kotlin)
* :books: [RxRedux](https://github.com/Zeyad-37/RxRedux)
* :books: [reductor](https://github.com/Yarikx/reductor)
* :books: [Droidux](https://github.com/izumin5210/Droidux)
#### TEA/Elm-architecture
* :books: [elmo](https://github.com/bobymicroby/elmo)
* :books: [cyklic](https://github.com/bkase/cyklic)
#### State machine
* :books: [StateMachine](https://github.com/Tinder/StateMachine) :fire: by [Tinder](https://github.com/Tinder)
* :books: [Workflow](https://github.com/square/workflow) :fire: by [Square](https://github.com/square)
* :books: [RxFeedback](https://github.com/NoTests/RxFeedback.kt)
#### State container
* :books: [Grox](https://github.com/groupon/grox) :fire:
* :books: [Eiffel](https://github.com/etiennelenhart/Eiffel) :fire:
* :books: [RxPM](https://github.com/dmdevgo/RxPM)
* :books: [Bansa](https://github.com/brianegan/bansa)
* :books: [Reduks](https://github.com/beyondeye/Reduks)
#### Flux
* :books: [Reark](https://github.com/reark/reark)
* :books: [Fluxxan](https://github.com/thedumbtechguy/Fluxxan)
* :books: [AndroidReactor](https://github.com/floschu/AndroidReactor)

### iOS

#### Redux
* :books: [ReSwift](https://github.com/ReSwift/ReSwift) :fire:
* :books: [Katana](https://github.com/BendingSpoons/katana-swift) :fire:
* :books: [RxAutomaton](https://github.com/inamiy/RxAutomaton)
#### State machine
* :books: [RxFeedback](https://github.com/NoTests/RxFeedback.swift) :fire:
* :books: [Stateful](https://github.com/albertodebortoli/Stateful)
#### State container
* :books: [Dispatch](https://github.com/alexdrone/Dispatch)
* :books: [Delta](https://github.com/thoughtbot/Delta)
#### Flux
* :books: [ReactorKit](https://github.com/ReactorKit/ReactorKit) :fire:
* :books: [Reactor](https://github.com/ReactorSwift/Reactor)
* :books: [RxState](https://github.com/RxSwiftCommunity/RxState)

## Examples :file_folder:

### Android

#### MVI
* :file_folder: [MVI (general)](https://github.com/kaushikgopal/movies-usf) :fire: by [Kaushik Gopal](https://github.com/kaushikgopal)
* :file_folder: [MVI + ViewModel (AAC)](https://github.com/oldergod/android-architecture) :fire: by [Benoît Quenaudon](https://github.com/oldergod)
* :file_folder: [MVI + Clean Architecture + AAC (boilerplate)](https://github.com/bufferapp/android-clean-architecture-mvi-boilerplate)
* :file_folder: [MVI + Clean Architecture (TODO app, advanced)](https://github.com/iPoli/iPoli-android)
* :file_folder: [MVI (sample app)](https://github.com/kanawish/android-mvi-sample)
* :file_folder: [MVI + RxPresenter](https://github.com/rongi/rx-presenter-example)
#### TEA/Elm-architecture
* :file_folder: [Counter (simple)](https://github.com/glung/elm-architecture-android)
* :file_folder: [TEA/Litho, 1](https://github.com/p69/Elma)
* :file_folder: [TEA/Litho, 2](https://github.com/y2k/litho-elmish)
* :file_folder: [TEA + ViewModel (AAC)](https://github.com/InventiDevelopment/Elmdroid)
* :file_folder: [TEA + MVP](https://github.com/sgrekov/Android-Elm-Architecture-Sample)
* :file_folder: [TradingApp (advanced)](https://github.com/futtetennista/TradingApp)
#### Flux
* :file_folder: [Firebase Chat (advanced)](https://github.com/FrangSierra/KotlinFirechat)

### iOS

`TODO`