This is a sample app that is build according to the six core tenets of modern MVVM as heard on the Fragmented Podcast
- Screens are driven by a single viewmodel. They have a one to one relationship.
- Screen listen to a an observable that emits a viewstate.
- Screens also listen to a an observable called view effects that emits fire-and-forget operations.
- All view events are funnelled into a single method in the viewmodel.
- Break chain in the UI when it's time to render.
- Test the heck out of this system to the point that you practically don't need instrumentation tests.
The app is split into two modules and by following a similar approach, each screen of your app can be self-containing modules.
Some of these modules may even depend on a common networking/database module.
Roadmap : A sample with a network call. A sample with a database call.