このプロジェクトについて
Foldは、任意の仕様準拠CalDAVサーバーと動作する自己ホスト型のTodoアプリケーションです。パーソナルソフトウェアとして構築されており、すべてのタスクを通常のVTODOプロパティとして保存することで、他のCalDAVクライアントでも読み取り可能であり、データの移植性と長期保存を保証します。
主な機能には、自然言語によるクイック追加パーサーがあります。例えば「Clean the gutters tomorrow at 3pm #chores p1」と入力すると、due date、time、list、priorityが1回のエンターキーで自動的に抽出されます。Today、Tomorrow、Next 7 days、Summary、Searchなどのビューは、すべてのリストを横断して集計されます。特殊なリスト名も認識します。Healthタスクはすべてのビューの上部に表示され、Groceriesは単一行に折りたたまれます。これは、買い物が完了したかどうかが問題であり、リストされたアイテム数が問題ではないためです。
オフライン操作は、接続回復時に再実行されるローカル変更キューによりサポートされています。アプリケーションはキーボードファーストで、スマートフォン上でPWAとしてインストール可能です。通知、ストリーク、または煩わしい機能は含まれていません。
ユーザーDBやセッションストアはありません。サインイン時にはCalDAV認証情報がサーバーで検証され、AES-256-GCMで暗号化されてブラウザ内のHttpOnly Cookieに格納されます。JavaScriptではCookieを読めません。以降の各リクエストでは、サーバメモリ内で認証情報を復号化してCalDAVの往復処理を行い、すぐに破棄されます。コンテナを再起動しても何も失われることはありません。なぜなら、サーバ側に永続化されるものがないからです。
デプロイメントはDockerを使用し、1つの必須環境変数SESSION_SECRETのみが必要です。この変数は認証情報Cookieを暗号化するために使用されます。Cookieには機密情報が含まれているため、TLS付きのリバースプロキシの使用が推奨されます。TLSがない信頼されたLANではALLOW_INSECURE_COOKIEオプションが存在します。CALDAV_ALLOWED_HOSTSによりログインフォームが受け入れるCalDAVサーバーを制限でき、パブリック facing インスタンスを保護できます。
Foldはサブタスク、繰り返しTodo、バックグラウンド同期、複数アカウントのサポートを意図的に行っていません。既存のRRULEプロパティは保持されますが、アプリからは作成・編集されません。一度にアクティブなCalDAVアカウントは1つだけです。
プロジェクトはMITライセンスです。開発にはBunを使用し、型チェック付きテストレイヤーを含みます。これにはVitestによるユニットテスト、実際のRadicaleサーバーに対する統合テスト、Playwrightによるe2eテストが含まれます。完全な仕様とアーキテクチャ決定は、リポジトリのdocsディレクトリに文書化されています。
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.