Radicale is a production-grade CalDAV/CardDAV server written in Python, providing calendar and contact synchronization over WebDAV. It operates as a standalone HTTP server (with optional WSGI compatibility) and includes a built-in web UI for managing collections, sharing, and user settings. The architecture is highly modular, with pluggable backends for authentication (htpasswd, LDAP, IMAP, OAuth2, PAM, etc.), storage (multifilesystem with caching and locking), authorization (owner-only, file-based rules), sharing (token-based, map-based, group/realm), and hooks (email, RabbitMQ). The server handles the full CalDAV/CardDAV protocol suite, including PROPFIND, REPORT, PUT, DELETE, MKCALENDAR, MKCOL, MOVE, PROPPATCH, and sync-collection, with support for recurring events, timezone handling, and free-busy queries. Key entry points include the CLI runner (`radicale/__main__.py`), the WSGI application factory (`radicale/__init__.py`), and the configuration system (`radicale/config.py`). Data flows from HTTP requests through the application layer (mixin-based HTTP method handlers) to the storage backend, which persists data as iCalendar (.ics) and vCard (.vcf) files on the filesystem. The sharing subsystem adds a REST API (`/.sharing/v1/`) for managing shares, property overlays, and on-the-fly conversions (e.g., VCFβICS for birthdays). External dependencies include the `vobject` library for iCalendar/vCard parsing, and optional packages for LDAP, IMAP, PAM, RabbitMQ, and bcrypt/argon2 password hashing. The codebase demonstrates strong engineering practices: comprehensive test suites (unit, integration with Playwright, CalDAV compatibility), extensive CI/CD (Python 3.9β3.14, PyPy, multiple filesystems), and a well-documented plugin system. It is actively maintained with frequent releases and a responsive issue tracker. The modular design and clean separation of concerns make it a solid reference for building extensible server applications.
Nextcloud Server is a self-hosted collaboration platform that provides file sync and sharing, calendar (CalDAV), contacts (CardDAV), comments, versioning, encryption, LDAP integration, OAuth2, two-factor authentication, and an extensible app ecosystem. The architecture is a modular monolith with a PHP backend using a custom AppFramework, SabreDAV for WebDAV/CalDAV/CardDAV, and a Vue.js frontend (mixing Vue 2 and Vue 3). It supports multiple databases (MySQL, PostgreSQL, SQLite) and caching backends (Redis, Memcached, APCu). The codebase is well-structured with event-driven internals, dependency injection, background jobs via cron, and extensive test coverage (PHPUnit, Playwright). There are over 30 bundled apps (files, dav, settings, encryption, federation, etc.) that follow plugin architecture. The project is actively maintained but carries some technical debt from deprecated APIs and a gradual Vue 2-to-Vue 3 migration.
Rustical is an open-source CalDAV and CardDAV server written in Rust, providing a lightweight, self-hosted alternative for calendar and addressbook synchronization. It implements the core WebDAV extensions (RFC 4791, 6352) with support for CalDAV scheduling, CardDAV group membership, WebDAV Push (web-push) notifications, and a built-in web frontend for management. The architecture is a modular Rust workspace with separate crates for DAV infrastructure, protocol handlers (caldav, carddav), storage abstraction, SQLite backend, XML serialization, OIDC authentication, and a Lit-based web UI. The server exposes RESTful HTTP endpoints via Axum, uses SQLite for persistence with `sqlx`, and supports app tokens, OIDC, and Nextcloud login for authentication. The codebase demonstrates solid engineering with thorough integration tests, snapshot testing, CI/CD pipelines, and a clear separation of concerns. However, it contains some workarounds and TODOs indicating active development rather than a polished final product. The custom XML derive macros and store trait pattern are particularly well-crafted and potentially reusable.
go-webdav is a Go library implementing WebDAV (RFC 4918), CalDAV (RFC 4791), and CardDAV (RFC 6352) protocols. It provides client and server implementations for these protocols, with a clear separation between the HTTP handling layer and storage backends via a FileSystem interface. The library includes a command-line tool to run a WebDAV server serving a local directory. The architecture is modular, with core WebDAV functionality in the 'webdav' package, CalDAV and CardDaV extensions in their respective packages, and low-level HTTP/XML handling in the 'internal' package. The library depends on go-ical and go-vcard for calendar and contact data processing.
Kurrier is a self-hosted unified communication platform designed to aggregate email, calendars, contacts, and cloud storage into a single workspace. It functions as a multi-tenant SaaS application, supporting various protocols including IMAP/SMTP for email, CalDAV/CardDAV for scheduling and contacts, and WebDAV/S3 for file storage. The system emphasizes data ownership and privacy, allowing users to manage multiple email identities and storage volumes within isolated workspaces. The architecture follows a monorepo structure with a clear separation of concerns. The frontend (`apps/web`) is built on Next.js 16 with React 19, utilizing Server Actions for business logic and a Nitro-based worker (`apps/worker`) for background jobs like IMAP sync and email delivery. Data persistence is handled by PostgreSQL with Drizzle ORM, while Redis manages job queues and caching. The platform integrates with external providers via a strategy pattern, supporting services like Google Workspace, AWS SES, and various SMTP providers. Key components include a robust provider abstraction layer for pluggable email and storage backends, a centralized encryption vault for sensitive credentials, and a standardized Server Action wrapper for consistent error handling. The codebase demonstrates high craftsmanship in its sync logic and multi-tenancy implementation, though it carries some technical debt related to type safety and complex DAV/IMAP state management.
ownCloud Core is the server-side component of ownCloud Classic, a file synchronization and sharing platform. In production, it provides file storage, synchronization, sharing (internal and federated), WebDAV/CalDAV/CardDAV access, versioning, trash bin, system tags, comments, external storage backends (SMB, SFTP, WebDAV, Google Drive, etc.), encryption, user/group management, and a plugin architecture for extending functionality. The system handles file upload/download via WebDAV or OCS API, manages sharing permissions and propagation, runs background jobs for maintenance (expiration, cleanup, sync), and supports federation between ownCloud instances. The architecture is a monolithic PHP application with a plugin system (apps) that register capabilities, routes, settings panels, and background jobs. Key entry points include index.php (main request handler), occ CLI (Symfony Console commands for admin tasks), cron.php (background job execution), and apps/dav/appinfo/v2/remote.php (WebDAV server). The codebase uses a custom PHP framework with namespaced public interfaces (OCP) and internal implementations (OC), SabreDAV for WebDAV/CalDAV/CardDAV, Symfony Console for CLI, Doctrine DBAL for database migrations, and Guzzle HTTP client for federation. Primary data flows involve file operations (upload, download, move, copy) through the filesystem abstraction layer, with metadata stored in a relational database (MySQL, MariaDB, PostgreSQL, SQLite). Sharing creates permission records and propagates changes via event hooks. Federation uses OCM protocol for cross-server sharing. Background jobs handle trash expiration, version cleanup, external storage scanning, and federation sync. External dependencies include a database server, optional memcached for caching, and external storage services (SMB, SFTP, WebDAV servers, Google Drive). The codebase is large (7844 files) with extensive localization (20+ languages) and testing (PHPUnit, Behat acceptance tests, JS specs). It shows signs of ongoing maintenance with recent commits and CI activity, but also contains legacy code, deprecated interfaces, and a custom PHP dialect (traits via use keyword) that may hinder standard tooling.