A SwiftUI app for iPhone and iPad. It lists cat pictures from a public API, shows a detail page with tags, and lets you add text to a picture and save it.
Built in February 2024 (23 to 28 Feb) against a written brief: a list page with at least ten items from a JSON dataset, and a detail page fed by a public API. One week later I rebuilt the same app in React Native (all-cat-pics-rn).
- Layered architecture (presentation, domain, data, model) with SwiftUI views, ViewModels, a repository and a small dependency-injection container.
- A custom navigation coordinator with lazy destination views.
- Unit tests for the API client, local storage, repository and ViewModels, using hand-written mocks (including
URLSession). UI tests use page objects and mocked network responses (SBTUITestTunnel). - Accessibility: raw IDs are turned into readable names for VoiceOver, and elements carry labels.
- English and Spanish via String Catalogs, light and dark themes, a SwiftLint build phase, and Kingfisher for image caching with retry.
Swift 5, SwiftUI, XCTest, SBTUITestTunnel, Kingfisher, SwiftLint. iOS 15+, Xcode 15.
Open AllCatPics.xcodeproj in Xcode 15, let Swift Package Manager resolve the dependencies, and run on a simulator.
The CI/CD plan in the original notes stayed a plan. Today I would add a CI workflow that runs the tests, use Swift Concurrency throughout, and look at the Observation framework instead of ObservableObject.