Template iOS App using Clean Architecture and MVVM with Views written in Code

May 6, 2023 · View on GitHub

iOS Project implemented with Clean Layered Architecture and MVVM. (Can be used as Template project by replacing item name “Repository”). More information in medium post: Medium Post about Clean Architecture + MVVM

Alt text

Layers

  • Domain Layer = Entities + Use Cases + Repositories Interfaces
  • Data Repositories Layer = Repositories Implementations + API (Network) + Persistence DB
  • Presentation Layer (MVVM) = ViewModels + Views

Dependency Direction

Alt text

Note: Domain Layer should not include anything from other layers(e.g Presentation — UIKit or SwiftUI or Data Layer — Mapping Codable)

Architecture concepts used here

Includes

  • Unit Tests for Use Cases(Domain Layer), ViewModels(Presentation Layer), NetworkService(Infrastructure Layer)
  • Dark Mode
  • SwiftUI example, demostration that presentation layer does not change, only UI (at least Xcode 11 required)

Networking

If you would like to use Networking from this example project as repo I made it availabe here

Requirements

  • Xcode Version 11.2.1+ Min iOS version 13 Swift 5.0+

How to use app

Tap on repository cell to expand cell and see its details.

https://user-images.githubusercontent.com/6785311/236620282-5cebc95e-cc02-421c-a981-23b6a02d3f1d.mp4