આર્કિટેક્ચર
સિસ્ટમની ઝાંખી
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> પર રીડાયરેક્ટ કરી શકે છે.