finds.dev

sergdort/ModernCleanArchitectureSwiftUI

Example of Modern Domain Driven modularisation of iOS apps

View on GitHub

★ 4,097Swiftupdated Feb 2025

// the take

A reference iOS app that layers Clean Architecture and DDD-style modularization (Domain/Features/Application/Platform/Core) on top of a two-screen movie/anime browser, built with Tuist for the module graph. It's aimed at iOS developers who want a worked example of how to split a SwiftUI app into independently buildable modules, not a library to pull into a real app.

Uses Tuist to actually generate and enforce the module graph, so illegal cross-layer dependencies fail at the project-generation step rather than relying on folder discipline. Implements the same kind of feature (Movies list/detail) twice with two different UI patterns, MVVM and TCA, so you can compare the two inside one consistent architecture instead of across unrelated repos. Talks to real external APIs (TMDB REST, AniList GraphQL via Apollo) instead of mock data, so the Gateway/Platform layer and local persistence are exercised against actual network and caching concerns. Dependency direction is genuinely one-way: Features depend only on Domain and UI, with concrete UseCase implementations injected from Application, which is the actual DIP payoff the architecture is supposed to deliver.

There are no tests anywhere in the tree for Domain UseCases or Entities, which is a real gap for a repo whose whole argument is that this structure makes business logic easier to verify in isolation. Persistence is split inconsistently between CoreData (Movies) and SwiftData (Anime) with no stated rationale, so someone copying the pattern has to guess which one is the intended default. The module count (five layers, a dozen+ sub-modules) is heavy for what is functionally a two-feature app; adopting this wholesale on a small team means paying the module-boundary tax long before the app has enough surface area to need it. Single contributor, and no commits since February 2025, so this reads as a one-time architecture writeup rather than something being kept current against SwiftUI/TCA/Swift concurrency changes.

We read the README, the directory tree and a key source file in October 2026. Nobody pays to be listed. How we judge →

// at a glance

Stars
4,097
Forks
507
Language
Swift
Last commit
12 Feb 2025

// nearby

If ModernCleanArchitectureSwiftUI isn't quite it.

All repos →