A ReactiveKit demo app. Check out this for more info on the app architecture.
- Clone the repo.
- Run
pod install
. - Open ReactiveGitter.xcworkspace.
- Have fun and make sure you have Gitter account!
Project is organized in modules like Home, Room, Login, etc. API code is located in module API. Common stuff is in module Common.
Modules that correspond to screens adhere to the architecture I call Scene - Director - Stage. It's a variation of MVVM with the additon of component that manages navigation (view controller presentation).
Stage is what user sees on the screen. Corresponds to the View in MVVM. Usually a subclass of UIViewController. Has a director that manages its content and handles its actions. Observes the director outputs.
Corresponds to the ViewModel in MVVM. It should be purely reactive. It can have streams, operations and dependencies on the input, but is should have only streams on the output.
Knows to present its stage onto a context (window, navigation controller, etc). Presents other scenes by observing the director outputs for presentation events.
Model is represented by the API module. It could also be called a service.