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
xcodegento 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