finds.dev← search

// the find

kudoleh/iOS-Clean-Architecture-MVVM

★ 4,386 · Swift · updated Jun 2026

Template iOS app using Clean Architecture and MVVM. Includes DIContainer, FlowCoordinator, DTO, Response Caching and one of the views in SwiftUI

A template iOS app demonstrating Clean Architecture with MVVM, built around a movie search feature backed by TMDB. The layering is textbook: Domain owns entities and use cases with zero UIKit imports, Data handles networking and Core Data persistence, Presentation wires ViewModels to Views. Aimed at iOS developers who want a reference implementation they can clone and rename.

The DIContainer pattern is done properly — each scene gets its own container that wires dependencies manually without a third-party DI framework, keeping the dependency graph explicit and debuggable. The same ViewModel powering both a UIKit table view and a SwiftUI list is a genuine demonstration that the pattern works, not just a claim. DTOs are cleanly separated from domain entities with explicit mapping, so the API response shape never leaks into business logic. Unit test coverage hits the right layers: use cases, ViewModels, and the networking stack each have dedicated test targets with real protocol mocking.

The custom Observable<T> binding mechanism is hand-rolled and limited — no backpressure, no error channel, no completion, and by 2024 this is just Combine or async/await with extra steps. The repo is Storyboard-first (one SwiftUI view aside), which is a meaningful friction point for anyone starting a new project today. Travis CI config is present but almost certainly broken — Travis dropped free OSS tiers years ago and the Fastlane setup would need real credentials to actually run. The movie domain is so simple it never stresses the architecture: there's one feature, two network calls, and no concurrent use cases, so the template doesn't show you how the seams hold under real complexity.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →