프로젝트 소개

Fold는 모든 사양 준수 CalDAV 서버와 함께 작동하는 자체 호스팅 todo 애플리케이션입니다. 개인용으로 개발되어 모든 작업을 다른 CalDAV 클라이언트가 읽을 수 있는 일반 VTODO 속성으로 저장하여 데이터 이전 가능성과 장기 보장을 보장합니다. 주요 기능은 자연어的快速 추가 파서입니다. "오래 tomorrow 3시에 gutters 청소 #chores p1"라고 입력하면 마감일, 시간, 목록, 우선순위가 단일 엔터 presses로 자동 추출됩니다. 오늘, 내일, 다음 7일, 요약, 검색 등의 뷰는 모든 목록을 가로질러 집계됩니다. 이 앱은 특수 목록 이름을 인식합니다: Health 작업은 모든 뷰의 맨 위에 나타나며, Groceries는 항목 수보다 쇼핑이 있었는지 여부를 묻기 때문에 단일 행으로 축소됩니다. 로컬 변경 큐잉을 통한 오프라인 운영을 지원합니다. 연결이 복원될 때 큐잉된 변경사항이 재생됩니다. 애플리케이션은 키보드 중심이며 휴대폰에서 PWA로 설치할 수 있습니다. 알림, 연속 기록, 권유 메시지는 포함되지 않습니다. 사용자 데이터베이스나 세션 저장소가 없습니다. 로그인 시 CalDAV 자격 증명이 서버에서 확인되고 AES-256-GCM으로 암호화된 후 브라우저의 HttpOnly 쿠키에 저장됩니다. JavaScript는 이 쿠키를 읽을 수 없습니다. 이후 각 요청에서 자격 증명은 서버 메모리에서 해독되어 CalDAV 통신에 사용된 후 즉시 폐기됩니다. 컨테이너를 재시작해도 서버 측에 영구 저장된 것이 없으므로 손실되는 것이 없습니다. 배포는 단일 필수 환경 변수인 SESSION_SECRET을 사용하는 Docker로 이루어집니다. 이 변수는 자격 증명 쿠키를 암호화합니다. 민감한 자격 증명을 담은 쿠키 때문에 TLS가 있는 역방향 프록시를 권장합니다. 보안이 확보된 LAN에서는 ALLOW_INSECURE_COOKIE 옵션을 사용할 수 있습니다. CALDAV_ALLOWED_HOSTS를 설정하여 로그인 양식이 허용하는 CalDAV 서버를 제한할 수 있으며, 이는 공개 인스턴스를 보호합니다. Fold는 의도적으로 하위 작업, 반복 todo, 백그라운드 동기화, 여러 계정을 지원하지 않습니다. 기존 RRULE 속성은 보존되지만 앱에서 생성하거나 편집하지 않습니다. 한 번에 하나의 CalDAV 계정만 활성화됩니다. 프로젝트는 MIT 라이선스입니다. 개발은 Bun을 사용하며, Vitest 단위 테스트, 실제 Radicale 서버 대상 통합 테스트, Playwright E2E 테스트를 포함한 유형 안전 테스트 레이어가 갖춰져 있습니다. 전체 사양과 아키텍처 결정사항은 저장소의 docs 디렉토리에 문서화되어 있습니다.