Architektura
Přehled 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>
Principy
- Samostatné veřejné domény pro
app,apiaauth - Zdrojem pravdy je Postgres
- Klient pro iOS funguje offline-first s místní databází SQLite a synchronizací
- Webová aplikace, aplikace pro iOS i rozhraní pro externí agenty sdílejí stejný model pracovního prostoru
- Externí agenti začínají na
GET https://api.nibomo.com/v1/
Podporovaní klienti
- Webová aplikace na
app.nibomo.com - Aplikace pro iOS v hlavním repozitáři s místním úložištěm SQLite
- Aplikace pro Android na Google Play
- Externí agentní klienti přes discovery, inicializaci pomocí OTP a
Authorization: ApiKey
Datový model
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
Tok dat
Web
- Prohlížeč se přihlašuje přes
auth.<domain>. - Webová aplikace načítá data pracovního prostoru z
api.<domain>. - Požadavky AI chatu jdou přes
/chat/local-turn. - Odeslaná opakování aktualizují stav plánovače při zápisu.
iOS
- Aplikace pro iOS zapisuje nejprve lokálně do SQLite.
- Místní změny se řadí do fronty v outboxu.
- Synchronizace odesílá změny přes
/v1/workspaces/{workspaceId}/sync/push. - Synchronizace stahuje vzdálené změny přes
/v1/workspaces/{workspaceId}/sync/pull. - Místní databáze změny použije a posune synchronizační kurzor.
Externí agenti
- Agenti začínají na
GET /v1/. - Inicializace pomocí OTP probíhá na
auth.<domain>. - Agent obdrží dlouhodobý API klíč.
- Agent načte
/v1/agent/me, vypíše pracovní prostory, v případě potřeby jeden vybere a pak používá/v1/agent/sql/querya/v1/agent/sql/execute.
Plánování
Nibomo používá jako plánovač opakování FSRS.
Poznámky k implementaci:
- backend a iOS udržují zrcadlové implementace FSRS
- webová aplikace zrcadlí datový kontrakt plánování, ale třetí kopii plánovače neobsahuje
- nastavení plánovače na úrovni pracovního prostoru zahrnuje požadovanou retenci, kroky učení, kroky opětovného učení, maximální interval a fuzz
- skutečný čas opakování pochází z
reviewedAtClient
Podrobný kontrakt najdete v logice plánování FSRS v hlavním repozitáři.
Autentizace
- E-mailový OTP přes Cognito
- Session cookies prohlížeče na sdílené doméně pro hostovanou webovou aplikaci
- Inicializace agenta pomocí OTP na
auth.<domain>, jejímž výsledkem je dlouhodobý ApiKey AUTH_MODE=nonepro místní vývojAUTH_MODE=cognitopro autentizaci jako v produkci
Podoba nasazení
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + backend v Lambděauth.<domain>-> API Gateway + autentizační služba v Lambdě- Postgres v AWS RDS
Apex doména může zůstat u samostatného marketingového webu. Pokud je při počátečním nasazení volná, infrastruktura ji může dočasně přesměrovat na app.<domain>.