idp.global Swift App
Multiplatform SwiftUI companion app for idp.global across iPhone, iPad, and Mac.
The current build is a polished preview backed by a mock service layer. It already walks through the core product flow:
- bind a device to an account with a QR payload
- review and approve identity or access requests
- track recent security and system events
- manage notification permissions and send a local test alert
Current Product Surface
After pairing, the app opens into a passport-style dashboard with four sections:
Passport: digital identity summary, trust context, and quick actionsRequests: approval queue with elevated-risk guidance and inline reviewActivity: timeline of pairing, approval, and system eventsAccount: member profile, trusted-device context, and recovery summary
The layout adapts by platform:
- iPhone uses a compact tab-based container
- iPad and Mac use a split-view workspace with richer side-by-side review
Pairing Flow
The sign-in flow supports:
- live QR scanning through the camera
- manual payload paste for testing
- a seeded preview payload while the real backend is still being wired up
Seeded payload on first launch:
idp.global://pair?token=swiftapp-demo-berlin&origin=code.foss.global&device=Safari%20on%20Berlin%20MBP
Mocked Preview Behavior
The app currently runs against MockIDPService, which seeds:
- a paired member profile
- pending and handled approval requests
- recent notifications and security events
- simulated incoming requests from the toolbar
This keeps the UI realistic while preserving a clean integration seam for the live backend later.
Open And Run
- Open
IDPGlobal.xcodeprojin Xcode. - Build and run the
IDPGlobalscheme on:My Mac- an iPhone simulator
- an iPad simulator
You can also build from the command line:
xcodebuild -project IDPGlobal.xcodeproj -scheme IDPGlobal -configuration Debug -destination 'platform=macOS' build
Useful Preview Launch Arguments
These launch arguments are already supported by the app model:
--mock-auto-pair: automatically pair with the seeded preview payload on launch--mock-section=overview--mock-section=requests--mock-section=activity--mock-section=account--mock-section=notifications: opens the activity timeline using a notification-friendly alias
Example:
--mock-auto-pair --mock-section=requests
Project Structure
Sources/App: app entry point and shared state inAppViewModelSources/Features/Auth: first-run pairing flow and QR scanner UISources/Features/Home: passport dashboard, requests, activity, notifications, and account surfacesSources/Core/Models: app-facing domain modelsSources/Core/Services: mock backend boundary and local notification coordination
Next Integration Step
Replace MockIDPService with a live implementation that:
- exchanges the QR payload for a real session
- loads profile, request, and activity data from the backend
- posts approval decisions back to
idp.global - syncs notification state with server-side events