iOS Project implemented with Clean Layered Architecture and MVVM.
- Domain Layer = Entities + Use Cases + Repositories Interfaces
- Data Repositories Layer = Repositories Implementations + API (Network)
- Presentation Layer (MVVM) = ViewModels + Views
- MVVM
- Clean Architecture
- Data Binding using Observable
- Dependency Injection
- SwiftUI implementation using viewmodel
Note: Domain Layer should not include anything from other layers(e.g Presentation — UIKit or SwiftUI or Data Layer — Mapping Codable)
- Object oriented programming approach
- SwiftUI for views
- Data Binding using Observable
- For data parsing, used the Codable approach.
- Unit Tests for Use Cases(Domain Layer), ViewModels(Presentation Layer), NetworkService(Infrastructure Layer)
- UI test with XCUITests
- Static code analysis using Swift lint
- Xcode Version 13.4.1+ Swift 5.0+
- Clone the repository
- Install the pods by running
pod install
- Build and run the app
- Build the Test Target
⇧⌘U (shift + command + U)
- Build and Run All Test Cases using following command in XCode
⌘U (command + U)
- Open the Test scheme
- In the Options tab, and check the Code Coverage checkbox
- After this each time test cases runs. it will generate the code coverage report
- Code coverage report can be view in Report Navigator(⌘9)