-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathREADME.md
130 lines (115 loc) · 11.5 KB
/
README.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
# 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`