The example app uses the Clean Architecture approach with SwiftUI and Combine.
- Xcodegen: Automated project configuration.
- Clean Architecture: Separation of concerns with clear boundaries between layers.
- SwiftUI: Declarative UI framework for building modern iOS apps.
- Combine: Reactive framework for handling asynchronous events and data streams.
- Dependency Injection: Easy management of dependencies and testability.
- Unit Tests: Includes unit tests for business logic and use cases.
- Dark Mode: Programmatically supports Dark Mode switch.
- SwiftData: SwiftData support.
- Xcode 15.0+
- Swift 5.7+
- Homebrew installed
-
Install Homebrew Dependencies:
brew install xcodegen swiftlint swiftformat
-
Clone the Repository:
git clone git@github.com:ngocpd-1250/clean_swiftui_combine.git cd BaseSwiftUI
-
Generate Xcode Project:
Use
xcodegen
to generate the Xcode project:xcodegen
-
Open Xcode:
Open the generated Xcode project:
open BaseSwiftUI.xcodeproj
-
Build and Run:
Build and run the project in Xcode.
The project follows the Clean Architecture principles with the following layers:
- Presentation: SwiftUI views, navigators and view models.
- Domain: Business logic and use cases.
- Data: Data sources and repositories.
- Linting: SwiftLint
- Formatting: SwiftFormat
- LinkNavigator: for navigation management
- Factory: for dependency injection
- Rswift: for resource management
- Kingfisher: for loading and caching remote images
- Alamofire: for API requests