ios-clean-architecture-mvvm is a template iOS app that demonstrates Clean Architecture and MVVM patterns.
The project addresses the challenge of structuring iOS applications in a maintainable, testable way by separating concerns into three distinct layers: Domain (entities, use cases, and repository interfaces), Data (repository implementations, networking, and persistence), and Presentation (ViewModels and Views). Dependencies flow inward toward the Domain layer, which remains isolated from framework-specific code. The template uses a concrete example of a movie search application that developers can adapt by replacing the Movie entity with their own domain model.
The architecture is suited for developers building medium to large iOS applications who want a scalable foundation with clear separation of concerns. The project demonstrates practical implementations of dependency injection, flow coordinators for navigation, data transfer objects for network mapping, and response caching strategies. It includes both UIKit and SwiftUI view implementations that share the same ViewModel, showing how the presentation layer remains decoupled from UI framework choices. The template includes unit tests covering the Domain, Presentation, and Infrastructure layers, pagination support, and dark mode compatibility. This approach works well for teams prioritizing testability and long-term maintainability over rapid prototyping.
The project shows consistent refinement of its example implementation, with updates addressing error handling patterns across ViewModels and networking layers, lifecycle management for view controllers, and integration of modern UI frameworks. The codebase demonstrates thoughtful architectural decisions through detailed examples rather than abstract patterns, making it a learning resource as much as a template. A companion networking library has been extracted and maintained separately, indicating the maintainers' willingness to modularize reusable components.