ಆರ್ಕಿಟೆಕ್ಚರ್

ಸಿಸ್ಟಮ್‌ನ ಸಮಗ್ರ ನೋಟ

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>

ತತ್ವಗಳು

  1. app, api ಮತ್ತು auth ಗಾಗಿ ಪ್ರತ್ಯೇಕ ಸಾರ್ವಜನಿಕ ಡೊಮೇನ್‌ಗಳು
  2. Postgres ಡೇಟಾದ ಅಧಿಕೃತ ಮೂಲ
  3. iOS ಕ್ಲೈಂಟ್ ಲೋಕಲ್ SQLite ಮತ್ತು ಸಿಂಕ್ ಜೊತೆಗೆ ಆಫ್‌ಲೈನ್-ಫಸ್ಟ್ ಆಗಿದೆ
  4. ವೆಬ್ ಆ್ಯಪ್, iOS ಆ್ಯಪ್ ಮತ್ತು ಬಾಹ್ಯ ಏಜೆಂಟ್ ಇಂಟರ್ಫೇಸ್ ಒಂದೇ ಕಾರ್ಯಸ್ಥಳ ಮಾದರಿಯನ್ನು ಹಂಚಿಕೊಳ್ಳುತ್ತವೆ
  5. ಬಾಹ್ಯ ಏಜೆಂಟ್‌ಗಳು GET https://api.nibomo.com/v1/ ನಿಂದ ಆರಂಭಿಸುತ್ತವೆ

ಬೆಂಬಲಿತ ಕ್ಲೈಂಟ್‌ಗಳು

  • app.nibomo.com ನಲ್ಲಿ ವೆಬ್ ಆ್ಯಪ್
  • ಮುಖ್ಯ ರೆಪೊಸಿಟರಿಯಲ್ಲಿ ಲೋಕಲ್ SQLite ಸ್ಟೋರೇಜ್ ಇರುವ iOS ಆ್ಯಪ್
  • Google Play ನಲ್ಲಿ Android ಆ್ಯಪ್
  • ಡಿಸ್ಕವರಿ, OTP ಬೂಟ್‌ಸ್ಟ್ರ್ಯಾಪ್ ಮತ್ತು Authorization: ApiKey ಮೂಲಕ ಬಾಹ್ಯ ಏಜೆಂಟ್ ಕ್ಲೈಂಟ್‌ಗಳು

ಡೇಟಾ ಮಾದರಿ

  • workspaces
  • workspace_members
  • user_settings
  • devices
  • cards
  • decks
  • review_events
  • applied_operations
  • sync_state

ಡೇಟಾ ಹರಿವು

ವೆಬ್

  1. ಬ್ರೌಸರ್ auth.<domain> ಮೂಲಕ ಸೈನ್ ಇನ್ ಆಗುತ್ತದೆ.
  2. ವೆಬ್ ಆ್ಯಪ್ ಕಾರ್ಯಸ್ಥಳದ ಡೇಟಾವನ್ನು api.<domain> ನಿಂದ ಲೋಡ್ ಮಾಡುತ್ತದೆ.
  3. AI ಚಾಟ್ ವಿನಂತಿಗಳು /chat/local-turn ಮೂಲಕ ಹೋಗುತ್ತವೆ.
  4. ಪುನರಾವರ್ತನೆಯ ಸಲ್ಲಿಕೆಗಳು ಬರೆಯುವ ಸಮಯದಲ್ಲೇ ಶೆಡ್ಯೂಲರ್ ಸ್ಥಿತಿಯನ್ನು ನವೀಕರಿಸುತ್ತವೆ.

iOS

  1. iOS ಆ್ಯಪ್ ಮೊದಲು ಲೋಕಲ್ ಆಗಿ SQLite ಗೆ ಬರೆಯುತ್ತದೆ.
  2. ಲೋಕಲ್ ಬದಲಾವಣೆಗಳು ಔಟ್‌ಬಾಕ್ಸ್‌ನ ಸರದಿಯಲ್ಲಿ ಸೇರುತ್ತವೆ.
  3. ಸಿಂಕ್ ಬದಲಾವಣೆಗಳನ್ನು /v1/workspaces/{workspaceId}/sync/push ಮೂಲಕ ಅಪ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ.
  4. ಸಿಂಕ್ ರಿಮೋಟ್ ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು /v1/workspaces/{workspaceId}/sync/pull ಮೂಲಕ ಡೌನ್‌ಲೋಡ್ ಮಾಡುತ್ತದೆ.
  5. ಲೋಕಲ್ ಡೇಟಾಬೇಸ್ ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಿ ಸಿಂಕ್ ಕರ್ಸರ್ ಅನ್ನು ಮುಂದಕ್ಕೆ ಸರಿಸುತ್ತದೆ.

ಬಾಹ್ಯ ಏಜೆಂಟ್‌ಗಳು

  1. ಏಜೆಂಟ್‌ಗಳು GET /v1/ ನಿಂದ ಆರಂಭಿಸುತ್ತವೆ.
  2. OTP ಬೂಟ್‌ಸ್ಟ್ರ್ಯಾಪ್ auth.<domain> ನಲ್ಲಿ ನಡೆಯುತ್ತದೆ.
  3. ಏಜೆಂಟ್ ದೀರ್ಘಾವಧಿಯ API ಕೀ ಪಡೆಯುತ್ತದೆ.
  4. ಏಜೆಂಟ್ /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 + S3
  • api.<domain> -> API Gateway + Lambda ಬ್ಯಾಕೆಂಡ್
  • auth.<domain> -> API Gateway + Lambda ದೃಢೀಕರಣ ಸೇವೆ
  • AWS RDS ನಲ್ಲಿ Postgres

ಮೂಲ ಡೊಮೇನ್ ಪ್ರತ್ಯೇಕ ಮಾರ್ಕೆಟಿಂಗ್ ಸೈಟ್‌ನಲ್ಲೇ ಉಳಿಯಬಹುದು. ಬೂಟ್‌ಸ್ಟ್ರ್ಯಾಪ್ ಸಮಯದಲ್ಲಿ ಅದು ಬಳಕೆಯಲ್ಲಿಲ್ಲದಿದ್ದರೆ, ಇನ್‌ಫ್ರಾಸ್ಟ್ರಕ್ಚರ್ ಅದನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ app.<domain> ಗೆ ರಿಡೈರೆಕ್ಟ್ ಮಾಡಬಹುದು.