Architektúra
Prehľad systému
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>
Princípy
- Samostatné verejné domény pre
app,apiaauth - Zdrojom pravdy je Postgres
- Klient pre iOS je navrhnutý primárne na prácu offline s lokálnym SQLite a synchronizáciou
- Webová aplikácia, aplikácia pre iOS a rozhranie pre externých agentov zdieľajú rovnaký model pracovného priestoru
- Externí agenti začínajú na
GET https://api.nibomo.com/v1/
Podporovaní klienti
- Webová aplikácia na
app.nibomo.com - Aplikácia pre iOS v hlavnom repozitári s lokálnym úložiskom SQLite
- Aplikácia pre Android na Google Play
- Externí agentní klienti cez zisťovanie, prvotné prihlásenie cez OTP a
Authorization: ApiKey
Dátový model
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
Tok dát
Web
- Prehliadač sa prihlási cez
auth.<domain>. - Webová aplikácia načíta dáta pracovného priestoru z
api.<domain>. - Požiadavky AI chatu idú cez
/chat/local-turn. - Odoslané opakovania pri zápise aktualizujú stav plánovača.
iOS
- Aplikácia pre iOS zapisuje najprv lokálne do SQLite.
- Lokálne zmeny sa radia do odchádzajúcej fronty.
- Synchronizácia nahráva zmeny cez
/v1/workspaces/{workspaceId}/sync/push. - Synchronizácia sťahuje vzdialené zmeny cez
/v1/workspaces/{workspaceId}/sync/pull. - Lokálna databáza zmeny aplikuje a posunie synchronizačný kurzor.
Externí agenti
- Agenti začínajú s
GET /v1/. - Prvotné prihlásenie cez OTP prebieha na
auth.<domain>. - Agent dostane dlhodobý API kľúč.
- Agent načíta
/v1/agent/me, vypíše pracovné priestory, v prípade potreby jeden vyberie a potom používa/v1/agent/sql/querya/v1/agent/sql/execute.
Plánovanie
Nibomo používa ako plánovač opakovaní FSRS.
Poznámky k implementácii:
- backend a iOS majú zrkadlové implementácie FSRS
- webová aplikácia zrkadlí dátový kontrakt plánovania, ale tretiu kópiu plánovača neobsahuje
- nastavenia plánovača na úrovni pracovného priestoru zahŕňajú požadovanú retenciu, kroky učenia, kroky opätovného učenia, maximálny interval a náhodný rozptyl intervalov
- skutočný čas opakovania pochádza z
reviewedAtClient
Podrobný kontrakt nájdete v logike plánovania FSRS v hlavnom repozitári.
Autentifikácia
- E-mailový OTP cez Cognito
- Cookies relácie prehliadača na zdieľanej doméne pre hosťovanú webovú aplikáciu
- Prvotné prihlásenie agenta cez OTP na
auth.<domain>s výstupom v podobe dlhodobého ApiKey AUTH_MODE=nonepre lokálny vývojAUTH_MODE=cognitopre autentifikáciu ako v produkcii
Podoba nasadenia
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + backend na Lambdeauth.<domain>-> API Gateway + autentifikačná služba na Lambde- Postgres v AWS RDS
Hlavná doména môže zostať na samostatnom marketingovom webe. Ak je počas prvotného nasadenia voľná, infraštruktúra ju môže dočasne presmerovať na app.<domain>.