- 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
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(withsince,limit, optional filters). - Auth: Header
X-API-Keyor queryapi_key. - Response: JSON; when
conflict: true,remoteDatais 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/inforeturnsendpoints(sync, delete, pull) andauthfor client discovery.
References
- SAMPLES.md – Keychain, offline queue, Face ID/Touch ID, certificate pinning
- Backend: backend/README.md
- Platform requirements: docs/reference/PLATFORM-REQUIREMENTS.md