DemoSwiftUIViper Download ZIP I chose this configuration of architecture: Swift Package Manage: It is a tool for managing the distribution of Swift code. VIPER: It supply decouple the code for reusability and testability SwiftUI: it is the lastest interface technology of Apple Combine: it is reactive programming framework. SnapshotTest: It allows to test very easily. Another architecture alternative I considered is MVVM, easier and simpler of implement I would improve if I had more time: Improve Unit Tests Integration Sourcery for AutoMockable protocols API Server Mock Responses