Historical note — This is the first tagged release, published before the ChronoGrid rebrand. The module names referenced below (
calendar-caldav,calendar-component,caldav-demo) and thecom.svenruppert.vaadin.calendarMaven namespace reflect the pre-rebrand state. Frommain(andv01.00.00onwards) the artefacts ship under the ChronoGrid name + thecom.svenruppert.chronogridnamespace; seedocs/CHRONOGRID_EXTRACTION.mdfor the migration journey.
First tagged release of the Calendar / CalDAV companion code for the blog post — the demo grew into a reusable Vaadin Flow add-on along the way.
What's in this release
The project ships as a Maven reactor with three modules:
| Module | Coordinates | Purpose |
|---|---|---|
calendar-caldav |
com.svenruppert.vaadin.calendar:calendar-caldav:00.10.00 |
Headless CalDAV wire (PUT / GET / DELETE / REPORT / PROPFIND), iCalendar mapping (VEVENT + VTODO ↔ FullCalendar Entry), CalendarService façade with Result<T, CalDavError> boundary |
calendar-component |
com.svenruppert.vaadin.calendar:calendar-component:00.10.00 |
Drop-in Vaadin Flow add-on: CalendarView + sub-components (navigation bar, status badges, settings/subscriptions/connections/event-editor dialogs), bundled CSS |
demo (war) |
com.svenruppert:caldav-demo:00.10.00 |
The consuming application — jSentinel-secured, iCloud-showcase walkthrough, multi-server / multi-subscription, polished navigation strip + framed view |
Highlights
- Three integration seams for add-on consumers:
CalendarStateStore(persistence),CalendarMessages(i18n),CalendarService(optional pre-built service). SeeREADME.md→ Using the calendar component in your own Vaadin app for the mount snippet. - Apple iCloud quick-connect preset shipped in
CalDavProviderPreset.DEFAULTS— one-click discovery + auth + subscription. - Multi-server / multi-subscription model: each subscription remembers its owning server's credentials;
CalendarService.fromConnections(...)fans out across all configured servers. - Per-subscription colour picker (HTML5
<input type=\"color\">) overrides the auto-palette per row. - Rolling N-days view (1–21 day window, slider-controlled) + custom Lumo-themed navigation bar; FullCalendar's built-in toolbar fully disabled.
- Connection liveness: 15-second background probe, per-server status pills, automatic reconnect notification.
Verification numbers
- 284 tests across the reactor (66 calendar-caldav + 5 calendar-component + 213 demo) — all green.
- SpotBugs: 0 findings on each of the three modules.
- Checkstyle: 0 violations on the two add-on modules.
- Sources + Javadoc jars produced on every
./mvnw install.
Docs
README.md— top-level walkthrough, three CalDAV-backend options (testbench / iCloud / Radicale / custom), feature-by-feature tour.calendar-caldav/README.md+calendar-component/README.md— consumer-side docs.docs/CALENDAR_COMPONENT_EXTRACTION.md— post-hoc design rationale + journey.docs/FEATURE_BACKLOG.md— parked post-freeze ideas (per-entry colour with calendar-stripe).
Out of scope for this release
- Maven Central publish ceremony (configuration is wired; Sonatype-creds + GPG passphrase are interactive).
- Per-entry colour with kalender-colour stripe (parked in the backlog).
- Decoupling
EntryMapperfromorg.vaadin.stefan:fullcalendar2(would letcalendar-caldavbe truly Vaadin-transitive-free).
Quick start
./mvnw -DskipTests install # build + install add-on jars to local repo
./start-caldav-dev-server.sh # Terminal 1: in-process CalDAV testbench
./start-vaadin-demo.sh # Terminal 2: Vaadin demo
# http://localhost:8080 → use the bootstrap token printed to stdout