Files
smoa/docs/ios
defiQUG a2dc194a49 Monorepo: Gitea CI, docs, auth/sync, backend APIs, gitignore
- Add Gitea Actions workflow; point README to gitea.d-bis.org/Sankofa_Phoenix/SMOA
- Expand .gitignore for Spring H2 data, secrets, Kotlin .kotlin/, tooling
- Track docs/api/generated ReDoc bundle; refresh api docs README
- Android: network/auth/sync, UI shell, tests; backend credentials/integrity APIs
- Docs, scripts (generate-api-docs), modules and core updates

Made-with: Cursor
2026-03-23 20:19:24 -07:00
..

SMOA iOS app (scaffold)

This folder is a scaffold for the SMOA iOS app. The actual app is to be implemented in a separate Xcode project or repo, targeting iOS 15, 16, and 17 (last three generations).

Contract

  • Use the same REST API as Android and Web: see PLATFORM-REQUIREMENTS.md and REQUIREMENTS-ALIGNMENT.md.
  • Sync: POST to /api/v1/sync/directory, /api/v1/sync/order, etc.; DELETE for sync delete.
  • Pull: GET /api/v1/directory, /api/v1/orders, /api/v1/evidence, /api/v1/credentials, /api/v1/reports (with since, limit, optional filters).
  • Auth: Header X-API-Key or query api_key.
  • Response: JSON; when conflict: true, remoteData is base64-encoded JSON.

Implementation checklist

  • Scaffold + samples API contract documented here; Swift snippets in SAMPLES.md (Keychain, offline queue outline, biometrics, pinning).
  • Create Xcode project (Swift/SwiftUI); minimum deployment target iOS 15.0 (deliver in Xcode repo).
  • Keychain pattern See SAMPLES.md saveApiKey / loadApiKey.
  • Implement PullAPI in app (URLSession): GET endpoints above.
  • Implement SyncAPI in app: POST sync + DELETE; parse SyncResponse.
  • Offline queue Pattern described in SAMPLES.md; app-specific Core Data/SwiftData TBD in Xcode project.
  • Optional auth/pinning Documented in SAMPLES.md; wire in app when needed.

Discovery

  • GET /api/v1/info returns endpoints (sync, delete, pull) and auth for client discovery.

References