- PHP 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| class | ||
| core/modules | ||
| langs | ||
| LICENSES | ||
| sql | ||
| test | ||
| CHANGELOG.md | ||
| LICENSE | ||
| README.md | ||
| REUSE.toml | ||
CalDavBridge — Dolibarr CalDAV infrastructure module
CalDavBridge is a reusable CalDAV infrastructure layer for Dolibarr. It synchronizes remote calendars (BlueMind, Google, or any standards-compliant CalDAV server) into a local cache and provides a push transport (PUT / REPORT / DELETE).
It deliberately contains no business logic: deciding which calendar event
maps to which project or third party is left to the consumer modules
(e.g. meetingnotes, inno3dashboard). This separation lets
several modules share one CalDAV transport instead of each re-implementing it.
Prerequisites
- Dolibarr ≥ 16.0 with the Projects and Third parties modules enabled
- PHP ≥ 7.4
- A reachable CalDAV server (BlueMind, Google Calendar, Nextcloud, etc.)
Installation
- Deploy the
caldavbridge/folder intohtdocs/custom/of your Dolibarr instance (or upload the ZIP via Home → Setup → Modules → Deploy external module). - Activate the module CalDavBridge.
- After deployment on Cloudron: disable then re-enable the module to run the database migrations.
Configuration
The module exposes infrastructure constants (namespace CALDAVBRIDGE_*):
| Constant | Default | Description |
|---|---|---|
CALDAVBRIDGE_PULL_ENABLED |
0 |
Enable the CalDAV pull cron (agenda → local cache) |
CALDAVBRIDGE_PULL_WINDOW_DAYS |
14 |
Pull time window: how many days back to scan |
CALDAVBRIDGE_EVENT_MIN_DURATION |
10 |
Minimum event duration (minutes) to be captured |
CALDAVBRIDGE_EVENT_EXCLUDE_KEYWORDS |
["perso","privé","[skip]"] |
JSON list of title keywords excluding an event from pull |
CALDAVBRIDGE_PULL_MAX_EVENTS |
1000 |
Safety cap: max events processed per run (0 = unlimited) |
CALDAVBRIDGE_PULL_MAX_BYTES |
8388608 |
Safety cap: max REPORT response size before a calendar is skipped (8 MB) |
CALDAVBRIDGE_CALEVENT_RETENTION_DAYS |
365 |
Days to keep cached calevents before purge |
Features
- CalDAV transport (PUT / REPORT / DELETE) against standards-compliant servers
- Pull synchronization of remote calendars into a local cache
(
llx_caldavbridge_calevent) - RRULE / EXDATE expansion of recurring events into concrete occurrences
- Pull safety caps (max events, max response size, time window)
- Configurable retention / purge of cached events
Architecture
caldavbridge/
├── core/modules/modCalDavBridge.class.php # Module descriptor
├── class/
│ ├── calevent.class.php # Cached calendar event + occurrence expansion
│ └── rruleexpander.class.php # RRULE/EXDATE → concrete occurrences
├── sql/ # llx_caldavbridge_calevent schema
├── langs/{fr_FR,en_US}/caldavbridge.lang
└── test/RRuleExpanderTest.php
Changelog
See CHANGELOG.md for version history.
Authors & provenance
This module is based on code provided by the Open Source community — first and foremost the Dolibarr ERP/CRM project, of which it is a derivative work, and the wider PHP/CalDAV ecosystem.
- Developed and maintained by inno³ — https://inno3.fr —
<hello@inno3.fr> - Development assisted by Claude Opus 4.8 (Anthropic)
License
GPL-3.0-or-later — © 2026 inno³ <hello@inno3.fr>
As a derivative work of Dolibarr (GPL-3.0-or-later), this module is distributed under the same license. See the LICENSE file for the full text.