One of the biggest idea for having MVVM is that most of data flow can be testable. Data binding in view layer by SwiftUI is awesome. However, this project has view model layer to make it testable as much as possible.
This idea can be achieved by Flux or Redux as well, but I chose MVVM first because it's handy.
Xcode 11.0 Beta 5+
Swift 5.1+
See other architectures as well