প্রকল্প সম্পর্কে
Google Calendar Sync একটি স্ব-হোস্টেড সেবা যা একটি ডেস্টিনেশন ক্যালেন্ডারকে একটি সোর্স ক্যালেন্ডারের প্রজেকশন হিসেবে সিঙ্ক্রোনাইজ করে রাখে। প্রতিটি রুল ঠিক একটি সোর্স ক্যালেন্ডার পর্যবেক্ষণ করে এবং ঠিক একটি ডেস্টিনেশন ক্যালেন্ডার পরিচালনা করে, এবং সোর্স ও ডেস্টিনেশন ভিন্ন Google পরিচয়ের হতে পারে। প্রকল্পটি স্পষ্টভাবে pre-alpha লেবেলযুক্ত: আর্কিটেকচার, সিঙ্ক ইঞ্জিন, প্রমাণীকৃত API, Google অ্যাডাপ্টার এবং Web UI একটি কার্যকর প্রথম ভার্টিক্যাল স্লাইস গঠন করে, কিন্তু লাইভ-অ্যাকাউন্ট সহনশীলতা পরীক্ষা এবং প্রোডাকশন-রেডিনেস পর্যালোচনা সম্পূর্ণ নয়, তাই টেস্ট ক্যালেন্ডার এবং ব্যাকআপের পরামর্শ দেওয়া হয়।
README-তে বর্ণিত মূল ডিজাইন পয়েন্ট:
- দিকনির্দেশক রুল: একটি সোর্স, একটি ডেস্টিনেশন, সোর্স-অথরিটেটিভ আচরণসহ। ডেস্টিনেশন সম্পাদনা, অনুপস্থিত প্রজেকশন এবং সোর্স বাতিলকরণ সিঙ্ক ও রিকনসিলিয়েশনের সময় মেরামত করা হয়।
- গোপনীয়তা ডিফল্ট: নতুন রুল ডিফল্টভাবে একটি Busy প্রজেকশনে থাকে; বিস্তারিত কপি করা opt-in এবং কখনোই অংশগ্রহণকারী, আয়োজকের পরিচয়, কনফারেন্সিং ডেটা, সংযুক্তি বা আমন্ত্রণ কপি করে না।
- নিরাপদ সক্রিয়করণ: একটি রুল সক্রিয় করার আগে অবশ্যই একটি পার্শ্বপ্রতিক্রিয়াহীন প্রিভিউ পাস করতে হবে।
- স্বয়ংসম্পূর্ণ ডিপ্লয়মেন্ট: SQLite, শিডিউলিং, API এবং Web UI একটি হালকা সেবা হিসেবে চলে, linux/amd64 এবং linux/arm64-এর জন্য একটি Docker ইমেজ এবং Compose সেবা হিসেবে সরবরাহ করা হয়।
- কোনো টেলিমেট্রি নেই: একটি কার্যকর ইনস্টলেশন শুধুমাত্র সিঙ্ক্রোনাইজেশনের জন্য প্রয়োজনীয় Google API এবং অপারেটরের কনফিগার করা কোনো নোটিফিকেশন এন্ডপয়েন্টের সাথে যোগাযোগ করে।
তালিকাভুক্ত সক্ষমতাগুলির মধ্যে রয়েছে টাইমড এবং সারাদিনের ইভেন্ট, পুনরাবৃত্ত সিরিজ, একক-ঘটনার পরিবর্তন ও বাতিলকরণ; busy-only বা detail-copy নীতি সহ প্রতি-রুল সারাদিন অন্তর্ভুক্তি; প্রতি পাঁচ মিনিটে ইনক্রিমেন্টাল পোলিং প্লাস ম্যানুয়াল 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 লক্ষ্য করে।
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.