Arkitektur
Systemöversikt
iOS app / agent client -> api.<domain> -> API Gateway -> Lambda backend -> Postgres
Web app -> app.<domain> -> CloudFront -> SPA
Browser and agent auth -> auth.<domain> -> API Gateway -> Auth Lambda -> Cognito
Apex fallback -> <domain> -> CloudFront redirect -> app.<domain>
Principer
- Separata publika domäner för
app,apiochauth - Postgres är sanningskällan
- iOS-klienten är offline-först med lokal SQLite plus synk
- Webbappen, iOS-appen och ytan för externa agenter delar samma modell för arbetsytor
- Externa agenter börjar med
GET https://api.nibomo.com/v1/
Klienter som stöds
- Webbapp på
app.nibomo.com - iOS-app i huvudrepot med lokal SQLite-lagring
- Android-app på Google Play
- Externa agentklienter via discovery, OTP-uppstart och
Authorization: ApiKey
Datamodell
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
Dataflöde
Webb
- Webbläsaren loggar in via
auth.<domain>. - Webbappen läser in data för arbetsytan från
api.<domain>. - Förfrågningar till AI-chatten går via
/chat/local-turn. - När en repetition skickas in uppdateras schemaläggarens tillstånd direkt vid skrivningen.
iOS
- iOS-appen skriver först lokalt till SQLite.
- Lokala ändringar köas i en utkorg.
- Synken laddar upp ändringar via
/v1/workspaces/{workspaceId}/sync/push. - Synken laddar ned fjärruppdateringar via
/v1/workspaces/{workspaceId}/sync/pull. - Den lokala databasen tillämpar ändringarna och flyttar fram synkmarkören.
Externa agenter
- Agenter börjar med
GET /v1/. - OTP-uppstarten körs på
auth.<domain>. - Agenten får en långlivad API-nyckel.
- Agenten läser in
/v1/agent/me, listar arbetsytor, väljer en vid behov och använder sedan/v1/agent/sql/queryoch/v1/agent/sql/execute.
Schemaläggning
Nibomo använder FSRS som schemaläggare för repetitioner.
Implementeringsanteckningar:
- backend och iOS har speglade FSRS-implementeringar
- webbappen speglar datakontraktet för schemaläggningen men levererar ingen tredje kopia av schemaläggaren
- schemaläggarens inställningar på arbetsytenivå omfattar önskad retention, inlärningssteg, steg för ominlärning, maximalt intervall och fuzz
- den faktiska tidpunkten för repetitionen kommer från
reviewedAtClient
Det detaljerade kontraktet finns i FSRS-schemaläggningslogiken i huvudrepot.
Autentisering
- Engångskod via e-post genom Cognito
- Sessionscookies i webbläsaren på delad domän för den molndrivna webbappen
- OTP-uppstart för agenter på
auth.<domain>som ger en långlivad ApiKey AUTH_MODE=noneför lokal utvecklingAUTH_MODE=cognitoför produktionslik autentisering
Driftsättningens upplägg
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + Lambda-backendauth.<domain>-> API Gateway + Lambda-autentiseringstjänst- Postgres i AWS RDS
Apex-domänen kan ligga kvar på en separat marknadsföringswebbplats. Om den är ledig vid den första driftsättningen kan infrastrukturen tillfälligt omdirigera den till app.<domain>.