ఆర్కిటెక్చర్
సిస్టమ్ పరిచయం
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
- హోస్ట్ చేసిన వెబ్ యాప్ కోసం ఉమ్మడి డొమైన్ బ్రౌజర్ సెషన్ కుకీలు
- దీర్ఘకాల ApiKey ని అందించే,
auth.<domain>పై ఏజెంట్ OTP ప్రారంభ సెటప్ - లోకల్ డెవలప్మెంట్ కోసం
AUTH_MODE=none - ప్రొడక్షన్ లాంటి ప్రామాణీకరణ కోసం
AUTH_MODE=cognito
డిప్లాయ్మెంట్ స్వరూపం
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + Lambda బ్యాకెండ్auth.<domain>-> API Gateway + Lambda ప్రామాణీకరణ సేవ- AWS RDS లో Postgres
అపెక్స్ డొమైన్ వేరే మార్కెటింగ్ సైట్పైనే ఉండవచ్చు. ప్రారంభ సెటప్ సమయంలో అది ఖాళీగా ఉంటే, మౌలిక సదుపాయాలు దాన్ని తాత్కాలికంగా app.<domain> కు రీడైరెక్ట్ చేయగలవు.