このプロジェクトについて
Google Calendar Syncは、宛先カレンダーをソースカレンダーの投影として同期させ続けるセルフホスト型サービスです。各ルールは厳密に1つのソースカレンダーを監視し、厳密に1つの宛先カレンダーを管理し、ソースと宛先は異なるGoogle IDに属していてもかまいません。このプロジェクトは明示的にpre-alphaと位置づけられています。アーキテクチャ、同期エンジン、認証済みAPI、Googleアダプター、Web UIは動作する最初の縦断的スライスを形成していますが、実アカウントでの耐久テストと本番準備レビューは完了していないため、テスト用カレンダーとバックアップの使用が推奨されています。
READMEに記載された主要な設計ポイント:
- 方向性のあるルール: 1つのソース、1つの宛先で、ソースを正とする動作。宛先での編集、欠落した投影、ソースでのキャンセルは、同期および照合の過程で修復されます。
- プライバシー既定値: 新しいルールは既定でBusy投影となり、詳細コピーはオプトインで、参加者、主催者の身元、会議データ、添付ファイル、招待状を決してコピーしません。
- 安全な有効化: ルールを有効化する前に、副作用のないプレビューを通過する必要があります。
- 自己完結型デプロイ: SQLite、スケジューリング、API、Web UIが1つの軽量サービスとして動作し、linux/amd64およびlinux/arm64向けのDockerイメージとComposeサービスとして提供されます。
- テレメトリなし: 機能するインストールは、同期に必要なGoogle APIおよび運用者が設定した通知エンドポイントとのみ通信します。
記載されている機能には、時刻指定イベントと終日イベント、繰り返しシリーズ、単一発生の変更とキャンセル、ルールごとの終日包含を伴うbusy-onlyまたは詳細コピーのポリシー、5分ごとの増分ポーリングと手動のSync Now、日次の完全照合パスとドリフト報告を伴うReconcile Now、プライベートなmanaged-originメタデータによるループ防止、安定した操作キー、cursor-last永続化、再試行バックオフとルール単位の障害分離、重複排除と任意のSMTPまたはWebhookインシデント配信を備えた認証済みActivityビュー、暗号化されたGoogle OAuth資格情報を伴う単一のローカル管理者パスワード、ライト/ダークテーマが含まれます。
セットアップには、Calendar APIを有効化したGoogle Cloudプロジェクト、OAuth 2.0 Webアプリケーションクライアント、および正確なリダイレクトURI http://localhost:8000/api/v1/oauth/google/callback が必要です。ローカルシークレットは.envファイルで設定し、保存されたGoogle資格情報をAES-256-GCMで暗号化する256ビットのマスターキーを含みます。READMEは、マスターキーを失うと接続済みアカウントの資格情報が読めなくなること、またGoogleがlocalhost以外の平文HTTPリダイレクトURIを拒否するため、LANホストでのデプロイには特別な対応が必要であることに言及しています。
同期動作: 初回実行では、実行の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.