Arkitektur
Systemoversikt
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>
Prinsipper
- Separate offentlige domener for
app,apiogauth - Postgres er den autoritative datakilden
- iOS-klienten er offline-first med lokal SQLite pluss synkronisering
- Nettappen, iOS-appen og grensesnittet for eksterne agenter deler samme modell for arbeidsområder
- Eksterne agenter starter fra
GET https://api.nibomo.com/v1/
Støttede klienter
- Nettapp på
app.nibomo.com - iOS-app i hovedrepositoriet med lokal SQLite-lagring
- Android-app på Google Play
- Eksterne agentklienter via discovery, førstegangsoppsett med OTP og
Authorization: ApiKey
Datamodell
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
Dataflyt
Web
- Nettleseren logger inn via
auth.<domain>. - Nettappen laster inn data for arbeidsområdet fra
api.<domain>. - Forespørsler til AI-chatten går gjennom
/chat/local-turn. - Innsendte repetisjoner oppdaterer planleggerens tilstand ved skriving.
iOS
- iOS-appen skriver først lokalt til SQLite.
- Lokale endringer settes i kø i en utboks.
- Synkroniseringen laster opp endringer via
/v1/workspaces/{workspaceId}/sync/push. - Synkroniseringen laster ned eksterne oppdateringer via
/v1/workspaces/{workspaceId}/sync/pull. - Den lokale databasen tar i bruk endringene og flytter synkroniseringsmarkøren fremover.
Eksterne agenter
- Agenter starter med
GET /v1/. - Førstegangsoppsettet med OTP kjører på
auth.<domain>. - Agenten mottar en langvarig API-nøkkel.
- Agenten laster inn
/v1/agent/me, lister arbeidsområdene, velger ett ved behov og bruker deretter/v1/agent/sql/queryog/v1/agent/sql/execute.
Repetisjonsplanlegging
Nibomo bruker FSRS til å planlegge repetisjonene.
Merknader om implementasjonen:
- backend og iOS har speilede FSRS-implementasjoner
- nettappen speiler datakontrakten for repetisjonsplanleggingen, men leverer ikke en tredje kopi av planleggeren
- planleggerinnstillingene på arbeidsområdenivå omfatter ønsket gjenkalling, læringstrinn, gjenlæringstrinn, maksimalt intervall og fuzz
- det faktiske tidspunktet for repetisjonen kommer fra
reviewedAtClient
Den detaljerte kontrakten finner du i FSRS-planleggingslogikken i hovedrepositoriet.
Autentisering
- Engangskode på e-post via Cognito
- Øktinformasjonskapsler i nettleseren på et delt domene for den hostede nettappen
- Førstegangsoppsett med OTP for agenter på
auth.<domain>, som gir en langvarig ApiKey AUTH_MODE=nonefor lokal utviklingAUTH_MODE=cognitofor produksjonslik autentisering
Utrullingsoppsett
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + Lambda-backendauth.<domain>-> API Gateway + Lambda-autentiseringstjeneste- Postgres i AWS RDS
Apex-domenet kan fortsatt brukes til et eget markedsføringsnettsted. Hvis det er ledig under førstegangsoppsettet, kan infrastrukturen midlertidig omdirigere det til app.<domain>.