FortechRomania/ios-mvp-clean-architecture
59.8
Adequate · 21 September 2026
2.1k
lines of production code
Swift
primary language
4
measurements over time
What this system is
This system is an iOS application for managing a book collection, built with Swift 5 and Xcode 10. It implements a Clean Architecture with an MVVM structure to handle listing, adding, and deleting books. The app supports data persistence through a local cache and API integration, with comprehensive unit tests covering the data and business logic layers.
Features
Added API and local persistence gateways for book management
The EntityGateway library now includes a complete set of components to manage books via an API and local cache. This includes an ApiClient for executing HTTP requests, request models for fetching, adding, and deleting books, and an ApiBooksGateway that maps API responses to domain models. Additionally, a CacheBooksGateway and LocalPersistenceBooksGateway (backed by a new CoreDataStack and XCDatamodel) were added to handle local storage and caching of book data.
Library/EntityGateway · high confidence
Added iOS application entry point and configuration
Introduced the iOS application structure by adding the AppDelegate class, which manages application lifecycle events and integrates with the existing CoreDataStack, alongside an Info.plist that configures the app's metadata, supported interface orientations, and light user interface style.
Library · high confidence
Added iOS storyboard files for the app's UI
Added the LaunchScreen.storyboard and Main.storyboard files to the iOS project. The Main storyboard defines the primary user interface, including a navigation controller, a Books table view for listing items, and a Book Details view for displaying specific information.
Library/Base.lproj · high confidence
Introduced MVVM-style scene structure for managing books
The Library/Scenes area now implements a structured approach to the app's core features. The Books scene provides a list of books with the ability to view details, delete entries, and add new books. The AddBook scene allows users to input new book information, while the BookDetails scene displays information about a specific book, including the ability to delete it. Each scene is supported by dedicated configurators, presenters, view controllers, and routers, establishing a clear separation of concerns for these user-facing interactions.
Library/Scenes · high confidence
Introduces core library components for book management
Adds foundational types and use cases for the library's domain model, including a Book entity, a BooksGateway protocol for data access, and specific use cases for adding, deleting, and displaying books. The implementation also introduces a custom Result type aliasing Swift's standard Result enum, alongside utility extensions for Date, UITextField, and UIViewController, as well as a ViewRouter protocol to handle segue preparation.
Library/Core · high confidence
iOS project structure and configuration files added
The iOS project configuration (project.pbxproj) and workspace files have been added to the repository, establishing the build system for the Library application. This includes the primary project file containing all source files, resources, and build phases, as well as the workspace and IDE configuration files required for Xcode to manage the project.
Library.xcodeproj · high confidence
Behavioural changes
Updated iOS project for Swift 5 and Xcode 10
The iOS project has been migrated to support Swift 5 and Xcode 10, ensuring compatibility with the latest development tools and language features. The README has been updated to reflect these requirements, specifying Xcode 10.2.1 and Swift 5 as the run requirements, and includes a detailed description of the MVP and Clean Architecture patterns used in the demo application.
(repo-wide) · high confidence
Test coverage
Added test helpers and test cases for the library
Added a suite of test doubles (spies and stubs) and unit tests for the library's gateways, use cases, and presenters. The new files include \ApiClientTest\, \CacheBooksGatewayTest\, \CoreDataBooksGatewayTest\, and various helper classes like \ApiBooksGatewaySpy\, \LocalPersistenceBooksGatewaySpy\, and \URLSessionStub\ to support testing the application's data layer and business logic.
LibraryTests · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 58 → 60 (+1.9)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 100 (-0.2)
- Architecture 100 → 72 (-28.0)
- Maturity 72 → 75 (+2.9)
- Readiness 24 → 36 (+11.7)
- Security 100 → 100 (+0.0)
- Domain Modelling 100 → 100 (+0.0)
Resolved (8)
- Coverage not included — suite not readable by the collector
- Dependency hygiene not measured — no supported dependency manifest was read
- No exposed public API
- Test reliability not included
- complexity unreadable for .swift — churn × complexity hotspots could not be measured
- early-stage repository — too few commits for a meaningful bus factor
- early-stage repository — too little history to judge knowledge freshness
- git history depth insufficient
New (8)
- Documentation: no project overview (README.md)
- Duplicated block (8 lines × 3) (Library/Scenes/AddBook/AddBookConfigurator.swift)
- Low cohesion: AddBookViewController (LCOM4 4) (Library/Scenes/AddBook/AddBookViewController.swift)
- Low cohesion: AppDelegate (LCOM4 6) (Library/AppDelegate.swift)
- Low cohesion: BookDetailsTableViewController (LCOM4 10) (Library/Scenes/BookDetails/BookDetailsTableViewController.swift)
- Low cohesion: BooksPresenterImplementation (LCOM4 5) (Library/Scenes/Books/BooksPresenter.swift)
- Low cohesion: BooksTableViewController (LCOM4 6) (Library/Scenes/Books/BooksTableViewController.swift)
- No ADRs found
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
FortechRomania/ios-mvp-clean-architecture was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 21 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 654d3e9d1cd6ca3a53402dd91acf84435ceef259 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-fa71c66cabd8.