इस प्रोजेक्ट के बारे में

Google Calendar Sync एक स्व-होस्टेड सेवा है जो गंतव्य कैलेंडर को स्रोत कैलेंडर के प्रोजेक्शन के रूप में सिंक्रोनाइज़ रखती है। प्रत्येक नियम ठीक एक स्रोत कैलेंडर का निरीक्षण करता है और ठीक एक गंतव्य कैलेंडर का प्रबंधन करता है, और स्रोत व गंतव्य भिन्न Google पहचानों के हो सकते हैं। परियोजना को स्पष्ट रूप से प्री-अल्फा कहा गया है: आर्किटेक्चर, सिंक इंजन, प्रमाणित API, Google अडैप्टर और Web UI एक कार्यशील पहला वर्टिकल स्लाइस बनाते हैं, लेकिन लाइव-खाता सहनशीलता परीक्षण और उत्पादन-तैयारी समीक्षा पूरी नहीं हुई है, इसलिए परीक्षण कैलेंडर और बैकअप की सलाह दी जाती है। README में वर्णित मुख्य डिज़ाइन बिंदु: - दिशात्मक नियम: एक स्रोत, एक गंतव्य, स्रोत-प्राधिकृत व्यवहार के साथ। गंतव्य संपादन, अनुपस्थित प्रोजेक्शन और स्रोत रद्दीकरण सिंक और मेल-मिलाप के दौरान ठीक किए जाते हैं। - गोपनीयता डिफ़ॉल्ट: नए नियम डिफ़ॉल्ट रूप से Busy प्रोजेक्शन पर होते हैं; विवरण प्रतिलिपि ऑप्ट-इन है और कभी भी उपस्थित लोगों, आयोजक पहचान, कॉन्फ़्रेंसिंग डेटा, अटैचमेंट या निमंत्रण की प्रतिलिपि नहीं करती। - सुरक्षित सक्रियण: किसी नियम को सक्षम करने से पहले उसे साइड-इफ़ेक्ट-रहित पूर्वावलोकन पास करना होगा। - स्व-निहित परिनियोजन: SQLite, शेड्यूलिंग, API और Web UI एक हल्की सेवा के रूप में चलते हैं, जो linux/amd64 और linux/arm64 के लिए Docker इमेज और Compose सेवा के रूप में भेजी जाती है। - कोई टेलीमेट्री नहीं: एक कार्यात्मक इंस्टॉलेशन केवल सिंक्रोनाइज़ेशन के लिए आवश्यक Google APIs और ऑपरेटर द्वारा कॉन्फ़िगर किए गए किसी भी नोटिफ़िकेशन एंडपॉइंट से संचार करता है। सूचीबद्ध क्षमताओं में समयबद्ध और पूरे दिन के ईवेंट, आवर्ती श्रृंखलाएँ, एकल-घटना परिवर्तन और रद्दीकरण; प्रति-नियम पूरे दिन समावेशन के साथ बिज़ी-ओनली या विवरण-प्रतिलिपि नीतियाँ; हर पाँच मिनट में इंक्रीमेंटल पोलिंग और मैनुअल Sync Now; दैनिक पूर्ण मेल-मिलाप पास और ड्रिफ्ट रिपोर्टिंग के साथ Reconcile Now; निजी managed-origin मेटाडेटा के माध्यम से लूप रोकथाम; स्थिर ऑपरेशन कुंजियाँ, cursor-last दृढ़ता, पुनः प्रयास बैकऑफ़ और पृथक नियम विफलताएँ; डिडुप्लिकेशन और वैकल्पिक SMTP या webhook घटना वितरण के साथ प्रमाणित Activity दृश्य; एन्क्रिप्टेड Google OAuth क्रेडेंशियल के साथ एक स्थानीय व्यवस्थापक पासवर्ड; और लाइट/डार्क थीम शामिल हैं। सेटअप के लिए Calendar API सक्षम किए गए Google Cloud प्रोजेक्ट, OAuth 2.0 Web application क्लाइंट, और सटीक रीडायरेक्ट URI http://localhost:8000/api/v1/oauth/google/callback की आवश्यकता होती है। स्थानीय रहस्य .env फ़ाइल के माध्यम से कॉन्फ़िगर किए जाते हैं, जिसमें 256-बिट मास्टर कुंजी शामिल है जो संग्रहीत Google क्रेडेंशियल को AES-256-GCM से एन्क्रिप्ट करती है। README बताता है कि मास्टर कुंजी खोने पर कनेक्टेड खाता क्रेडेंशियल अपठनीय हो जाते हैं, और LAN-होस्ट परिनियोजन को विशेष हैंडलिंग चाहिए क्योंकि Google localhost के अलावा सादे-HTTP रीडायरेक्ट URI अस्वीकार करता है। सिंक्रोनाइज़ेशन व्यवहार: पहला रन उन स्रोत ईवेंट को पढ़ता है जो रन से 30 दिन पहले से पहले समाप्त नहीं होते, गंतव्य का निरीक्षण करता है, और दोनों एंडपॉइंट के लिए Google के इंक्रीमेंटल टोकन रिकॉर्ड करता है। बाद के रन दोनों परिवर्तन फ़ीड का उपभोग करते हैं, इसलिए गंतव्य-केवल संपादन या विलोपन पूर्ण पुनःस्कैन के बिना ठीक किए जाते हैं। प्रत्येक प्रासंगिक स्रोत ईवेंट के लिए डोमेन Create, Update, Delete, Ignore या Conflict चुनता है; अस्पष्ट पहचान या स्वामित्व का अनुमान नहीं लगाया जाता। कर्सर केवल तब आगे बढ़ते हैं जब एक बैच पूरी तरह सफल हो, और प्रदाता लेखन में स्थिर ऑपरेशन कुंजियाँ होती हैं ताकि पुनः प्रयास प्रोजेक्शन की नकल न करें। गोपनीयता और सुरक्षा नोट: ईवेंट शीर्षक, विवरण और स्थान मेमोरी में संसाधित होते हैं और SQLite या ऑडिट प्रविष्टियों में संग्रहीत नहीं होते; मैपिंग प्रदाता ID, रिवीज़न और एक गैर-प्रतिवर्ती फ़िंगरप्रिंट बनाए रखती है; किसी खाते को डिस्कनेक्ट करने पर संग्रहीत क्रेडेंशियल हटा दिए जाते हैं बिना नियम, मैपिंग या प्रबंधित प्रोजेक्शन हटाए; Google लेखन sendUpdates=none का उपयोग करते हैं; Web UI और परिचालन API के लिए स्थानीय व्यवस्थापक सत्र आवश्यक है, जबकि /health सार्वजनिक और न्यूनतम रहता है। आर्किटेक्चर ports-and-adapters सीमाओं के साथ एक मॉड्यूलर मोनोलिथ है; सिंक्रोनाइज़ेशन डोमेन में कोई FastAPI, SQLite, Google SDK, React, OAuth या Docker निर्भरता नहीं है। बैकएंड विकास Python 3.12 और FastAPI का उपयोग करता है, फ्रंटएंड Node.js 22+, React, TypeScript, Vite और Tailwind CSS का उपयोग करता है। गुणवत्ता जाँच में ruff, mypy, 80% कवरेज फ़्लोर के साथ pytest, फ्रंटएंड typecheck/lint/test/build, और मल्टी-प्लेटफ़ॉर्म Docker बिल्ड शामिल हैं। प्रारंभिक रिलीज़ में Google Calendar एकमात्र प्रदाता है; Outlook और CalDAV को आर्किटेक्चरल संभावनाएँ बताया गया है, समर्थित सुविधाएँ नहीं। परियोजना MIT License के अंतर्गत संस्करण 0.1.0 को लक्षित करती है।