Native iOS app for checking Scottish ferry service status, disruptions, and route details.
The app displays ferry routes and real-time service information from the Scottish Ferries backend API, with support for:
- Service status and disruption indicators
- Route details and additional service information
- Push notification preferences per installation
- In-app map and web information screens
- SwiftUI
- Swift 6.0
- Xcode project + workspace
- Sentry (via Swift Package Manager)
- Xcode with Swift 6 support
- iOS deployment target configured in project:
26.0
- Clone the repository.
- Open
FerryServices_2.xcworkspacein Xcode. - Select the
FerryServices_2scheme. - Build and run on a simulator or device.
Build:
xcodebuild \
-workspace FerryServices_2.xcworkspace \
-scheme FerryServices_2 \
-configuration Debug \
-destination 'generic/platform=iOS Simulator' \
buildTest:
xcodebuild \
-workspace FerryServices_2.xcworkspace \
-scheme FerryServices_2 \
-destination 'generic/platform=iOS Simulator' \
testFerryServices_2/app source code (views, models, API client, assets)FerryServices_2Tests/unit testsFerryServices_2.xcodeproj/project configurationFerryServices_2.xcworkspace/workspace and shared schemeLicenses/license artifacts
The app currently targets:
https://scottishferryapp.com/api
See FerryServices_2/API Client/APIClient.swift for endpoint usage.
The app ships with a bundled SQLite offline snapshot at FerryServices_2/offline-snapshot.sqlite3 and refreshes it from /api/offline/snapshot.sqlite3 using ETag headers.
To refresh both the checked-in OpenAPI document and bundled snapshot during development:
./Scripts/update-openapi.sh