bambamboole / laravel-dav
CalDAV and CardDAV server for Laravel, powered by sabre/dav, with a typed DTO API.
Requires
- php: ^8.3
- illuminate/contracts: ^12.0 || ^13.0
- illuminate/database: ^12.0 || ^13.0
- illuminate/support: ^12.0 || ^13.0
- sabre/dav: ^4.7
Requires (Dev)
- ext-sockets: *
- amphp/amp: ^3.1
- amphp/http-server: ^3.4
- illuminate/process: ^12.0 || ^13.0
- larastan/larastan: ^3.0
- laravel/boost: ^2.4
- laravel/pint: ^1.27
- orchestra/testbench: ^10.0 || ^11.0
- pestphp/pest: ^4.7
This package is auto-updated.
Last update: 2026-06-06 12:26:17 UTC
README
Laravel DAV
CalDAV & CardDAV server for Laravel, powered by sabre/dav, with a typed DTO API.
Expose your application's calendars and contacts to any standards-compliant client — Apple Calendar, Apple Contacts, Thunderbird, DAVx⁵, and friends — backed by Eloquent and your own owner model.
Features
- Full CalDAV — events (
VEVENT), todos (VTODO), and journals (VJOURNAL). - Full CardDAV — contacts (
VCARD) in vCard 3.0 and 4.0, stored losslessly with version content-negotiation, plus rich, typed parsing. - WebDAV sync — collection synchronization via sync tokens (RFC 6578).
- CalDAV scheduling (RFC 6638) — auto-scheduling between local users, schedule tags, free/busy queries, and optional iMIP email to external attendees (RFC 6047).
- Calendar sharing — CalendarServer-style sharing with read-only and read-write access.
- Calendar proxy delegation — account-level read and write delegation through CalDAV proxy principals.
- CalDAV managed attachments (RFC 8607) — server-managed calendar
ATTACHfiles stored on a configurable Laravel filesystem disk. - Service discovery —
/.well-known/caldavand/.well-known/carddavredirects (RFC 6764). - HTTP Basic authentication — stateless, backed by hashed credentials.
- Owner-agnostic — any model that implements a small contract can own collections.
- Typed DTOs — every calendar object and contact carries the verbatim
rawpayload plus best-effort, strongly-typed parsed fields. - Eloquent storage — collections and objects are plain models you can query, extend, and relate to the rest of your app.
Requirements
- PHP
^8.3 - Laravel
^12or^13 - sabre/dav
^4.7
Installation
composer require bambamboole/laravel-dav
The package auto-registers its service provider and loads its migrations, so php artisan migrate creates the tables. From there, implement the DavOwner contract on your User model, issue a client credential, and create a calendar — the documentation walks through each step.
Documentation
Full documentation lives at bambamboole.github.io/laravel-dav:
- Getting Started — installation, owner setup, credentials, configuration, and connecting a client.
- Core Concepts — principals and owners, calendars, address books, sync tokens, and the raw/DTO data model.
- Guides — creating collections, calendar sharing, proxy delegation, calendar objects, contacts, scheduling, free/busy and availability, reacting to changes, and custom models.
- Protocol Support — WebDAV, CalDAV, CardDAV, discovery, authentication, locks, and client compatibility.
Testing
composer test
License
The MIT License (MIT). See LICENSE for details.