A comprehensive example iOS app demonstrating Domain-Driven Design and Clean Architecture with modular SwiftUI implementation.
ModernCleanArchitectureSwiftUI is a reference implementation for iOS developers applying Domain-Driven Design (DDD) and Clean Architecture principles in SwiftUI applications. It demonstrates a modular, layered approach with clear separation of concerns, using examples like a movie and anime explorer app. The project showcases how to decouple business logic from implementation details to build maintainable, testable, and scalable iOS apps.
iOS developers and teams seeking to implement Domain-Driven Design and Clean Architecture in SwiftUI projects, particularly those building complex applications requiring modularity and clear layer responsibilities. It's also suitable for developers interested in comparing UI architecture patterns like MVVM and The Composable Architecture (TCA) within a clean architecture context.
Developers choose this project for its comprehensive, practical demonstration of DDD and Clean Architecture in SwiftUI, including concrete examples with multiple UI patterns (MVVM and TCA). It emphasizes modularization to reduce build times via Xcode Previews and feature-specific builds, and provides a plugin architecture for easy swapping of infrastructure like APIs and databases.
Example of Modern Domain Driven modularisation of iOS apps
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The architecture enforces distinct responsibilities for Domain, Features, Application, and Platform layers, as shown in layered diagrams, ensuring business logic is isolated from UI and infrastructure.
Supports Xcode Previews and feature-specific builds to reduce compilation times, enhancing developer productivity by allowing isolated development without building the entire app.
Demonstrates multiple UI patterns like MVVM and TCA within the same app, allowing teams to choose based on project needs without being locked into a single approach.
Enables easy swapping of infrastructure components like APIs and databases, as illustrated with MoviesDB and AnimeAPI examples, promoting maintainability through decoupling.
Requires installing Tuist and running specific commands (tuist install, tuist generate), adding overhead compared to standard Xcode projects and potentially slowing onboarding.
Assumes familiarity with Domain-Driven Design, Clean Architecture, and patterns like TCA, which can be daunting for developers without prior experience in these concepts.
The layered modular approach might be excessive for apps with straightforward business logic, adding unnecessary complexity and boilerplate code.