The native apps at Kickstarter are built using a Model View ViewModel (MVVM) pattern. These ViewModels leverage Functional Reactive Programming (FRP) to allow for us to not only keep logic out of our views, but also test our ViewModels.
We leverage FRP by using RxJava in our Android app and ReactiveSwift in our iOS app.
Here are some of our favorite resources for learning FRP:
- An intro blog post by Dan Lew
- RxMarbles to help visualize different rx operators
- Why Functional Programming Matters blog post
- Learn You a Haskell for Great Good!: you don't need to program in Haskell to work on our apps, but this book is a great resource for deeper understanding of our often-used operators
- Functional Programming in a Playground talk by Brandon Williams
- Lisa & Gina's TDD talk at Functional Swift Conference, 2016
- ViewModels at Kickstarter Swift Talk
- ReactiveSwift on Slack a useful place to discuss and ask questions about ReactiveSwift.