DAV Server #

A production-ready, self-hosted CalDAV and CardDAV server built on Spring Boot, designed for organisations that need reliable calendar and contact synchronisation under their own infrastructure — without cloud dependencies, subscription fees, or data leaving the premises.
What it Provides #
- CalDAV — calendar and event synchronisation compliant with RFC 4791 and RFC 5545 (iCalendar)
- CardDAV — contacts and address-book synchronisation compliant with RFC 6352 and RFC 6350 (vCard)
Both services share a unified authentication layer, a single PostgreSQL database, and a single HTTPS endpoint — one server to deploy and maintain.
Protocol Compliance #
The server implements the full WebDAV method set required by CalDAV and CardDAV clients:
| Method | Purpose |
|---|---|
OPTIONS | Capabilities advertisement (DAV: 1, 2, calendar-access, addressbook) |
GET / PUT / DELETE | Event and contact CRUD |
PROPFIND | Property discovery at depth 0, 1, and infinity |
REPORT | Calendar queries and multiget (RFC 4791) |
MKCALENDAR | Calendar collection creation (RFC 4791 §5.3.1) |
Auto-discovery endpoints (/.well-known/caldav, /.well-known/carddav) and principal discovery (/principals/{username}) are implemented so clients can configure themselves with just a hostname and credentials — no manual path entry required.
Client Compatibility #
Tested and verified with:
- macOS — Calendar.app and Contacts.app (auto-discovery, full sync, calendar creation)
- iOS / iPadOS — native Calendar and Contacts apps
- Android — DAVx⁵ (standards-compliant sync client)
- Linux — Evolution, Thunderbird, GNOME Online Accounts, KDE Kontact
- Any other CalDAV / CardDAV compliant application
vCard compatibility is handled automatically: the server stores vCards in their original format and converts to vCard 3.0 at serve time for clients — such as macOS Contacts and Thunderbird — that do not support vCard 4.0.
Key Features #
Synchronisation
- ETag-based conflict detection on every create and update
- CTag (collection tag) updates propagate immediately to all clients
- Calendar-query REPORT with time-range filtering for efficient partial sync
- Calendar-multiget REPORT for bulk event retrieval by UID
- Contact group support with Apple-compatible formatting
Security
- HTTPS / TLS first — runs on port 8443 with full SSL/TLS support
- HTTP Basic Authentication with BCrypt password hashing (RFC 2617)
- Per-user data isolation via path-based access control (
/caldav/{username}/,/carddav/{username}/)
Operations
- PostgreSQL backend with Flyway schema versioning — schema changes never require manual
ALTER TABLE - Spring Boot profiles for dev / prod environments
- REST management API for principals, calendars, events, address books and contacts
- OpenAPI / Swagger UI included for API exploration
- Health check endpoint at
/api/healthfor monitoring integration - N+1 query optimisation with explicit
JOIN FETCH— no performance degradation at scale - Automatic change-log cleanup (configurable retention, default 30 days)
Integration with FM GCalendar Module #
The DAV Server is the on-premise backend counterpart of the FM GCalendar Module. Together they form a complete, self-hosted calendar infrastructure:
- FM GCalendar Module manages events inside FileMaker, synchronising with Google Calendar or directly with the DAV Server.
- DAV Server publishes those calendars and contacts to every user’s devices over standard CalDAV/CardDAV.
- Changes from any device sync back through the server — no third-party cloud in the loop.
This pairing is the only configuration that gives a FileMaker-centric organisation full read/write calendar sync on all devices with zero external cloud dependency.
Architecture Overview #
Client devices (macOS / iOS / Android / Linux)
│ HTTPS (port 8443)
▼
DAV Server (Spring Boot 3.2 · Java 17 · Jetty)
│
▼
PostgreSQL (principals · calendars · events · address books · contacts)
The server uses a servlet-filter chain to intercept WebDAV methods before Spring’s dispatcher, which keeps the protocol handling layer cleanly separated from the REST management API and from Spring Security.
REST Management API #
Beyond the protocol endpoints, a full REST API is available for administrative operations:
| Resource | Endpoints |
|---|---|
| Principals (users) | CRUD at /api/principals |
| Calendars | CRUD at /api/calendars |
| Events | CRUD at /api/calendar-objects |
| Address books | CRUD at /api/addressbooks |
| Contacts | CRUD at /api/contacts |
| Health | GET /api/health |
All endpoints are documented via OpenAPI 3.0 — accessible at /swagger-ui.html and /rapidoc.html on a running instance.
Deployment Requirements #
- Host OS: Linux (recommended), macOS or Windows
- Runtime: Java 17 or later
- Database: PostgreSQL 15+, network-accessible
- Network: Reachable hostname or VPN endpoint for client connectivity
- TLS: Self-signed certificate included for development; bring your own or use Let’s Encrypt for production
# Start (development profile, self-signed cert)
./mvnw spring-boot:run
# Start (production profile + TLS)
./mvnw -Pprod,tls spring-boot:run
Implemented RFCs #
| RFC | Standard |
|---|---|
| RFC 4918 | WebDAV — core protocol |
| RFC 4791 | CalDAV — calendar access |
| RFC 5545 | iCalendar format |
| RFC 6352 | CardDAV — contact access |
| RFC 6350 | vCard format |
| RFC 6764 | Auto-discovery (.well-known endpoints) |
| RFC 2617 | HTTP Basic Authentication |
Pricing #
DAV Server — Base Deployment #
Single-instance deployment on customer infrastructure. Includes CalDAV and CardDAV services, HTTPS configuration, PostgreSQL schema setup, REST management API, and initial principal and collection provisioning.
| Price |
|---|
| Base deployment 950 € |
FM GCalendar Integration Pack #
Configuration and verification of the two-way sync between the FM GCalendar Module and the DAV Server. Includes end-to-end testing with at least one desktop client and one mobile client.
| Price |
|---|
| Integration pack 350 € |
Implementation Support #
On-site or remote assistance for server setup, network configuration, certificate installation, and client onboarding for up to five users.
| Price |
|---|
| Implementation support 500 € |
Maintenance Support #
| Rate | Pack | Mode |
|---|---|---|
| 80 €/hour | 5-hour pack | remote |
| 60 €/hour | 30-hour pack | remote |
| 120 € | one on-site visit | — |
On-site visits within the Barcelona area.
Upgrades #
Major upgrades are priced at 50% of the original deployment cost.
Maintenance updates are free.
Warranty #
Permanent and unlimited functional warranty against defects in the delivered deployment. The warranty remains active indefinitely, except in the event of tampering or an upgrade to the underlying Java runtime, PostgreSQL version, or operating system that is outside the agreed compatibility matrix.