Arhitektura
Pregled sustava
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>
Načela
- Zasebne javne domene za
app,apiiauth - Postgres je izvor istine
- iOS klijent prvenstveno radi offline, s lokalnim SQLite-om i sinkronizacijom
- Web aplikacija, iOS aplikacija i sučelje za vanjske agente dijele isti model radnog prostora
- Vanjski agenti započinju s
GET https://api.nibomo.com/v1/
Podržani klijenti
- Web aplikacija na
app.nibomo.com - iOS aplikacija u glavnom repozitoriju s lokalnom pohranom u SQLite-u
- Android aplikacija na Google Playu
- Klijenti vanjskih agenata putem otkrivanja, početnog postavljanja OTP-om i
Authorization: ApiKey
Podatkovni model
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
Tok podataka
Web
- Preglednik se prijavljuje putem
auth.<domain>. - Web aplikacija učitava podatke radnog prostora s
api.<domain>. - Zahtjevi AI razgovora idu kroz
/chat/local-turn. - Poslana ponavljanja ažuriraju stanje raspoređivača već pri zapisu.
iOS
- iOS aplikacija najprije zapisuje lokalno u SQLite.
- Lokalne promjene stavljaju se u izlazni red.
- Sinkronizacija šalje promjene putem
/v1/workspaces/{workspaceId}/sync/push. - Sinkronizacija preuzima udaljena ažuriranja putem
/v1/workspaces/{workspaceId}/sync/pull. - Lokalna baza podataka primjenjuje promjene i pomiče kursor sinkronizacije.
Vanjski agenti
- Agenti započinju s
GET /v1/. - Početno postavljanje OTP-om odvija se na
auth.<domain>. - Agent dobiva dugotrajni API ključ.
- Agent učitava
/v1/agent/me, dohvaća popis radnih prostora, po potrebi odabire jedan, a zatim koristi/v1/agent/sql/queryi/v1/agent/sql/execute.
Raspoređivanje
Nibomo koristi FSRS kao raspoređivač ponavljanja.
Napomene o implementaciji:
- backend i iOS imaju međusobno usklađene implementacije FSRS-a
- web aplikacija slijedi isti podatkovni ugovor za raspoređivanje, ali ne sadrži treću kopiju raspoređivača
- postavke raspoređivača na razini radnog prostora uključuju željeno zadržavanje znanja, korake učenja, korake ponovnog učenja, najveći interval i nasumično odstupanje
- stvarno vrijeme ponavljanja dolazi iz
reviewedAtClient
Za detaljan ugovor pogledajte FSRS logiku raspoređivanja u glavnom repozitoriju.
Autentifikacija
- OTP iz e-pošte putem Cognita
- Kolačići sesije preglednika na zajedničkoj domeni za hostiranu web aplikaciju
- Početno postavljanje agenta OTP-om na
auth.<domain>, uz dugotrajni ApiKey kao rezultat AUTH_MODE=noneza lokalni razvojAUTH_MODE=cognitoza autentifikaciju kao u produkciji
Struktura implementacije
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + Lambda backendauth.<domain>-> API Gateway + Lambda usluga autentifikacije- Postgres u AWS RDS-u
Apex domena može ostati na zasebnoj marketinškoj stranici. Ako je slobodna tijekom početnog postavljanja, infrastruktura je može privremeno preusmjeriti na app.<domain>.