आर्किटेक्चर
सिस्टम का अवलोकन
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 क्लाइंट local SQLite और sync के सहारे offline-first ढंग से काम करता है
- वेब ऐप, iOS ऐप, और बाहरी एजेंट इंटरफ़ेस एक ही workspace मॉडल साझा करते हैं
- बाहरी एजेंट
GET https://api.flashcards-open-source-app.com/v1/से शुरू होते हैं
समर्थित क्लाइंट
app.flashcards-open-source-app.comपर चलने वाला वेब ऐप- मुख्य रिपॉज़िटरी में local SQLite storage वाला iOS ऐप
- Google Play पर उपलब्ध Android ऐप
- डिस्कवरी, OTP bootstrap, और
Authorization: ApiKeyके ज़रिए जुड़ने वाले बाहरी एजेंट क्लाइंट
डेटा मॉडल
workspacesworkspace_membersuser_settingsdevicescardsdecksreview_eventsapplied_operationssync_state
डेटा प्रवाह
वेब
- ब्राउज़र
auth.<domain>के माध्यम से साइन इन करता है। - वेब ऐप
api.<domain>से workspace से जुड़ा डेटा लोड करता है। - AI chat अनुरोध
/chat/local-turnके माध्यम से जाते हैं। - review जमा होने पर लिखने के समय scheduler state अपडेट होती है।
iOS
- iOS ऐप पहले local SQLite में लिखता है।
- स्थानीय बदलावों को outbox में कतारबद्ध किया जाता है।
- Sync
/v1/workspaces/{workspaceId}/sync/pushके माध्यम से बदलाव upload करती है। - Sync
/v1/workspaces/{workspaceId}/sync/pullके माध्यम से दूरस्थ बदलाव डाउनलोड करती है। - स्थानीय database इन बदलावों को apply करता है और sync cursor को आगे बढ़ाता है।
बाहरी एजेंट
- एजेंट
GET /v1/से शुरू होते हैं। - OTP bootstrap
auth.<domain>पर चलता है। - एजेंट को एक long-lived API key मिलती है।
- एजेंट
/v1/agent/meलोड करता है, workspaces की सूची पढ़ता है, ज़रूरत पड़ने पर एक चुनता है, और फिर/v1/agent/sqlका उपयोग करता है।
शेड्यूलिंग
Flashcards में review scheduler के लिए FSRS का उपयोग होता है।
कार्यान्वयन संबंधी टिप्पणियाँ:
- backend और iOS, FSRS के ऐसे इम्प्लीमेंटेशन बनाए रखते हैं जो एक-दूसरे से मेल खाते हैं
- वेब ऐप scheduling data contract के अनुरूप रहता है, लेकिन scheduler की तीसरी अलग implementation शामिल नहीं करता
- workspace-level scheduler settings में desired retention, learning steps, relearning steps, maximum interval, और fuzz शामिल होते हैं
- वास्तविक review timestamp
reviewedAtClientसे लिया जाता है
विस्तृत डेटा अनुबंध के लिए FSRS scheduling logic in the main repository देखें।
प्रमाणीकरण
- Cognito के ज़रिए email OTP
- होस्ट किए गए वेब ऐप के लिए shared-domain browser session cookies
auth.<domain>पर agent OTP bootstrap, जिससे long-lived ApiKey मिलता है- स्थानीय development के लिए
AUTH_MODE=none - production-जैसी auth व्यवस्था के लिए
AUTH_MODE=cognito
परिनियोजन संरचना
app.<domain>-> CloudFront + S3api.<domain>-> API Gateway + Lambda backendauth.<domain>-> API Gateway + Lambda auth service- AWS RDS पर Postgres
apex डोमेन अलग मार्केटिंग साइट पर रह सकता है। अगर bootstrap के दौरान वह खाली हो, तो इन्फ्रास्ट्रक्चर उसे अस्थायी रूप से app.<domain> पर redirect कर सकता है।