tiagomartinho/Reminders
52.8
Adequate · 21 September 2026
369
lines of production code
Swift
primary language
4
measurements over time
What this system is
This system is a mobile application for managing reminders, structured around a modular architecture that separates core business logic from the UI layer. It provides functionality to create, store, and display a list of reminders, with the core logic encapsulated in a dedicated framework. The application supports adding new reminders and navigating between views, backed by an in-memory repository for data persistence.
Features
Add Reminder flow implemented in RemindersCore
The Add Reminder feature is now fully implemented within the RemindersCore module. The new AddReminderPresenter handles user interactions by saving new reminders to the repository and routing the user back to the main reminders list upon completion or cancellation. The AddReminderView protocol defines the interface for the UI layer, ensuring the presenter can access the reminder title. This change introduces the core logic and view contract for adding new reminders.
RemindersCore/Add Reminder · high confidence
Introduce RemindersCore/Reminders module with presenter and view protocol
Added the RemindersCore/Reminders module, introducing a new RemindersPresenter that handles loading reminders from a repository and routing to add a new reminder, alongside a RemindersView protocol defining the view interface.
RemindersCore/Reminders · medium confidence
Introduced in-memory reminders repository
Added a new InMemoryRemindersRepository class that stores reminders in a private array, providing save and load functionality for in-memory data persistence.
Reminders/Repositories · high confidence
Introduces core data model and navigation routing for reminders
The RemindersCore module now includes a Reminder struct to represent reminder data and a Route enum to define navigation destinations. A new Router protocol is introduced to handle routing logic, enabling the application to navigate to the add reminder view.
RemindersCore · medium confidence
Behavioural changes
Add Reminder screen now uses a presenter-based architecture
The Add Reminder screen has been refactored to use the AddReminderPresenter for handling save and cancel actions, replacing direct logic in the view controller. The view controller now delegates behavior to the presenter, improving separation of concerns and testability.
Reminders/Add Reminder · high confidence
App icon and project files reorganized into Supporting Files folder
The app icon configuration (Contents.json) has been updated to include explicit filename mappings for iPhone and iPad app icons across multiple sizes and scales, ensuring proper asset resolution. Additionally, the project's supporting files, including the launch screen storyboard and Info.plist, have been moved into a new 'Supporting Files' directory structure. The Info.plist was also updated to remove the 'UIMainStoryboardFile' key, simplifying the storyboard configuration.
Reminders/Supporting Files · medium confidence
App launch now programmatically initializes the window and routes to the Reminders screen
The application's startup process has been refactored to programmatically create the main window and immediately route to the Reminders view, removing the previous reliance on a storyboard and a separate ViewController class. Users will now see the Reminders interface immediately upon launch, with the app's initial state determined by the new routing logic in AppDelegate rather than a static storyboard configuration.
Reminders · medium confidence
Enable code coverage for Reminders and RemindersCore tests
The Xcode project schemes for the Reminders app and RemindersCore library have been updated to enable code coverage. Specifically, the \Reminders.xcscheme\ now includes \codeCoverageEnabled = "YES"\ in its test action, and the new \Core.xcscheme\ is configured to build the \RemindersCore\ framework and \RemindersCoreTests\ for testing, profiling, and analysis. This change allows developers to measure test coverage for both the main application and the core library during development and CI processes.
Reminders.xcodeproj/xcshareddata · high confidence
Introduced RemindersRepository protocol
A new public protocol, RemindersRepository, has been added to define the interface for saving and loading reminders. This change establishes a clear contract for reminder storage operations, separating the interface definition from any specific implementation.
RemindersCore/Repositories · high confidence
Rearranged project file structure for test targets
The Info.plist file has been moved from the RemindersUITests directory to the Supporting Files folder within the RemindersTests directory. This change reorganizes the project's internal file structure, likely to better align with Xcode's default project templates or to consolidate test-related resources.
RemindersTests/Supporting Files · high confidence
Refactor Reminders router to use polymorphic routing
The Reminders/Router directory has been restructured to replace conditional routing logic with a polymorphic architecture. New files introduce a ControllerRouterFactory that selects specific router implementations (AddReminderRouter, RemindersRouter) based on the Route, each conforming to a ControllerRouter protocol. This separates creation from routing and removes UIKit dependencies from the AppRouter by abstracting Window and ViewController interactions through protocols.
Reminders/Router · high confidence
Refactor controller creation into dedicated factory classes
The app's controller instantiation logic has been restructured: a new \ControllerFactory\ protocol and separate \AddReminderControllerFactory\ and \RemindersControllerFactory\ classes now handle the creation of their respective view controllers. Each factory is responsible for wiring up its specific presenter and wrapping the resulting view controller in a \UINavigationController\. The previous monolithic \ViewControllerFactory\ has been updated to delegate to these new, specialized factories, separating the concerns of creation and routing.
Reminders/Factories · medium confidence
Reminders list now displays in a table view
The Reminders screen has been updated to present the list of reminders using a UITableView, replacing the previous display method. The view controller now manages a table view that shows each reminder's title, and selection of list items is disabled.
Reminders/Reminders · high confidence
Reminders project restructured with new architecture and test infrastructure
The Reminders Xcode project has been reorganized to support a new modular architecture. This includes the introduction of a dedicated 'Core' framework (RemindersCore.framework) and the extraction of routing, controller, and presenter components into separate, dedicated files (e.g., AppRouter, ControllerFactory, AddReminderPresenter). The change also updates the build configuration to embed the new framework and adds corresponding test targets and mock implementations for the new architecture.
Reminders.xcodeproj · medium confidence
RemindersCoreTests Info.plist relocated to new directory structure
The Info.plist file for the RemindersCoreTests target has been moved from the RemindersTests directory to RemindersCoreTests/Supporting Files, aligning the test bundle's configuration with the updated project structure.
RemindersCore/Supporting Files, RemindersCoreTests/Supporting Files · medium confidence
Test coverage
Added end-to-end UI tests for the Reminders feature; Added test doubles for reminders functionality; Added test doubles for view controllers, windows, and controller factories; Added tests for AppRouter navigation; Added tests for the RemindersPresenter; Added unit tests for the AddReminderPresenter; Removed default test template from RemindersTests.
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 48 → 53 (+4.4)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 99 (-0.6)
- Architecture 69 → 69 (+0.0)
- Maturity 52 → 57 (+5.0)
- Readiness 24 → 34 (+9.3)
- Security 100 → 100 (+0.0)
Resolved (9)
- 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
- The README is an iOS app doc with no architecture/design documentation for the Clean Architecture structure or wireframes. (README.md)
- The README names several concrete improvement ideas (mocking, DI, refactor tests) but never explains what each one entails or where to implement them in the codebase. (README.md)
- complexity unreadable for .swift — churn × complexity hotspots could not be measured
- no production source files with tracked history to analyse
- no production source files with tracked history to analyse
New (8)
- Documentation: no architecture or design documentation (README.md)
- Duplicated block (5 lines × 2) (RemindersCore/Add Reminder/AddReminderPresenter.swift)
- Duplicated block (8 lines × 2) (Reminders/Factories/AddReminderControllerFactory.swift)
- Low cohesion: RemindersViewController (LCOM4 4) (Reminders/Reminders/RemindersViewController.swift)
- No ADRs found
- No assertions: testShowNoReminders (RemindersUITests/RemindersEndToEndTest.swift)
- Test project verifies nothing: RemindersUITests (RemindersUITests/RemindersEndToEndTest.swift)
- bus factor 1 — one contributor carries this repository
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
tiagomartinho/Reminders 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 fd68e1544ddb90e83ee826ec522d74b3b5859324 — 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-b84573e22831.