CalDAV bridge for Dolibarr — pull/cache/push transport layer (GPL-3.0)
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-06-10 08:17:07 +02:00
class Initial open-source release — caldavbridge 0.1.0-alpha.0 2026-06-09 09:43:48 +02:00
core/modules Initial open-source release — caldavbridge 0.1.0-alpha.0 2026-06-09 09:43:48 +02:00
langs Initial open-source release — caldavbridge 0.1.0-alpha.0 2026-06-09 09:43:48 +02:00
LICENSES license: ship the verbatim GNU GPL-3.0 text (was an abridged summary) 2026-06-10 08:17:07 +02:00
sql Initial open-source release — caldavbridge 0.1.0-alpha.0 2026-06-09 09:43:48 +02:00
test Initial open-source release — caldavbridge 0.1.0-alpha.0 2026-06-09 09:43:48 +02:00
CHANGELOG.md Initial open-source release — caldavbridge 0.1.0-alpha.0 2026-06-09 09:43:48 +02:00
LICENSE license: ship the verbatim GNU GPL-3.0 text (was an abridged summary) 2026-06-10 08:17:07 +02:00
README.md Initial open-source release — caldavbridge 0.1.0-alpha.0 2026-06-09 09:43:48 +02:00
REUSE.toml Initial open-source release — caldavbridge 0.1.0-alpha.0 2026-06-09 09:43:48 +02:00

CalDavBridge — Dolibarr CalDAV infrastructure module

License Dolibarr PHP

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

  1. Deploy the caldavbridge/ folder into htdocs/custom/ of your Dolibarr instance (or upload the ZIP via Home → Setup → Modules → Deploy external module).
  2. Activate the module CalDavBridge.
  3. 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.