ആർക്കിടെക്ചർ
സിസ്റ്റം അവലോകനം
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>
തത്വങ്ങൾ
app,api,authഎന്നിവയ്ക്ക് വേറിട്ട പൊതു ഡൊമെയ്നുകൾ- Postgres ആണ് ആധികാരിക ഡാറ്റാ ഉറവിടം
- iOS ക്ലയന്റ് ഓഫ്ലൈൻ-ഫസ്റ്റ് ആണ്: ലോക്കൽ SQLite ഉം സമന്വയവും
- വെബ് ആപ്പ്, iOS ആപ്പ്, ബാഹ്യ ഏജന്റ് സർഫേസ് എന്നിവ ഒരേ വർക്ക്സ്പേസ് മോഡൽ പങ്കിടുന്നു
- ബാഹ്യ ഏജന്റുകൾ
GET https://api.nibomo.com/v1/ൽ നിന്ന് തുടങ്ങുന്നു
പിന്തുണയുള്ള ക്ലയന്റുകൾ
app.nibomo.comലെ വെബ് ആപ്പ്- പ്രധാന റിപ്പോസിറ്ററിയിൽ, ലോക്കൽ SQLite സ്റ്റോറേജുള്ള iOS ആപ്പ്
- Google Play ലെ Android ആപ്പ്
- ഡിസ്കവറി, OTP ബൂട്ട്സ്ട്രാപ്പ്,
Authorization: ApiKeyഎന്നിവ വഴിയുള്ള ബാഹ്യ ഏജന്റ് ക്ലയന്റുകൾ
ഡാറ്റാ മോഡൽ
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
ഡാറ്റാ പ്രവാഹം
വെബ്
- ബ്രൗസർ
auth.<domain>വഴി സൈൻ ഇൻ ചെയ്യുന്നു. - വെബ് ആപ്പ്
api.<domain>ൽ നിന്ന് വർക്ക്സ്പേസ് ഡാറ്റ ലോഡ് ചെയ്യുന്നു. - AI ചാറ്റ് അഭ്യർത്ഥനകൾ
/chat/local-turnവഴി പോകുന്നു. - ആവർത്തന ഫലങ്ങൾ സമർപ്പിക്കുമ്പോൾ, എഴുതുന്ന സമയത്തുതന്നെ ഷെഡ്യൂളർ നില പുതുക്കുന്നു.
iOS
- iOS ആപ്പ് ആദ്യം ലോക്കലായി SQLite ലേക്ക് എഴുതുന്നു.
- ലോക്കൽ മാറ്റങ്ങൾ ഒരു ഔട്ട്ബോക്സിൽ ക്യൂ ചെയ്യുന്നു.
- സമന്വയം
/v1/workspaces/{workspaceId}/sync/pushവഴി മാറ്റങ്ങൾ അപ്ലോഡ് ചെയ്യുന്നു. - സമന്വയം
/v1/workspaces/{workspaceId}/sync/pullവഴി റിമോട്ട് അപ്ഡേറ്റുകൾ ഡൗൺലോഡ് ചെയ്യുന്നു. - ലോക്കൽ ഡാറ്റാബേസ് മാറ്റങ്ങൾ പ്രയോഗിക്കുകയും സമന്വയ കർസർ മുന്നോട്ട് നീക്കുകയും ചെയ്യുന്നു.
ബാഹ്യ ഏജന്റുകൾ
- ഏജന്റുകൾ
GET /v1/ൽ നിന്ന് തുടങ്ങുന്നു. - OTP ബൂട്ട്സ്ട്രാപ്പ്
auth.<domain>ൽ നടക്കുന്നു. - ഏജന്റിന് ഒരു ദീർഘകാല API കീ ലഭിക്കുന്നു.
- ഏജന്റ്
/v1/agent/meലോഡ് ചെയ്യുന്നു, വർക്ക്സ്പേസുകളുടെ പട്ടിക എടുക്കുന്നു, ആവശ്യമെങ്കിൽ ഒന്ന് തിരഞ്ഞെടുക്കുന്നു, തുടർന്ന്/v1/agent/sql/query,/v1/agent/sql/executeഎന്നിവ ഉപയോഗിക്കുന്നു.
ഷെഡ്യൂളിംഗ്
Nibomo ആവർത്തന ഷെഡ്യൂളറായി FSRS ഉപയോഗിക്കുന്നു.
നടപ്പാക്കൽ കുറിപ്പുകൾ:
- ബാക്കെൻഡും iOS ഉം FSRS ന്റെ ഒരേപോലുള്ള നടപ്പാക്കലുകൾ സൂക്ഷിക്കുന്നു
- വെബ് ആപ്പ് ഷെഡ്യൂളിംഗ് ഡാറ്റാ കരാർ അതേപടി പിന്തുടരുന്നു, പക്ഷേ ഷെഡ്യൂളറിന്റെ മൂന്നാമതൊരു പകർപ്പ് ഉൾക്കൊള്ളുന്നില്ല
- വർക്ക്സ്പേസ് തലത്തിലുള്ള ഷെഡ്യൂളർ ക്രമീകരണങ്ങളിൽ ആഗ്രഹിക്കുന്ന ഓർമ്മനിലനിർത്തൽ നിരക്ക്, പഠന ഘട്ടങ്ങൾ, പുനഃപഠന ഘട്ടങ്ങൾ, പരമാവധി ഇടവേള, ഫസ് എന്നിവ ഉൾപ്പെടുന്നു
- യഥാർത്ഥ ആവർത്തന സമയമുദ്ര
reviewedAtClientൽ നിന്നാണ് വരുന്നത്
വിശദമായ കരാറിനായി, പ്രധാന റിപ്പോസിറ്ററിയിലെ FSRS ഷെഡ്യൂളിംഗ് ലോജിക് കാണുക.
ഓതന്റിക്കേഷൻ
- Cognito വഴി ഇമെയിൽ OTP
- ഹോസ്റ്റ് ചെയ്ത വെബ് ആപ്പിനായി പങ്കിട്ട ഡൊമെയ്നിലെ ബ്രൗസർ സെഷൻ കുക്കികൾ
auth.<domain>ൽ ഏജന്റ് OTP ബൂട്ട്സ്ട്രാപ്പ്, ഫലമായി ദീർഘകാല ApiKey- ലോക്കൽ ഡെവലപ്മെന്റിന്
AUTH_MODE=none - പ്രൊഡക്ഷന് സമാനമായ ഓതന്റിക്കേഷന്
AUTH_MODE=cognito
ഡിപ്ലോയ്മെന്റ് ഘടന
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + Lambda ബാക്കെൻഡ്auth.<domain>-> API Gateway + Lambda ഓതന്റിക്കേഷൻ സേവനം- AWS RDS ലെ Postgres
അപെക്സ് ഡൊമെയ്ൻ ഒരു വേറിട്ട മാർക്കറ്റിംഗ് സൈറ്റിൽ തുടരാം. ബൂട്ട്സ്ട്രാപ്പ് സമയത്ത് അത് ഒഴിവാണെങ്കിൽ, ഇൻഫ്രാസ്ട്രക്ചറിന് അതിനെ താൽക്കാലികമായി app.<domain> ലേക്ക് റീഡയറക്ട് ചെയ്യാം.