npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@m4rti21/n8n-nodes-caldav

v0.1.0

Published

n8n community node for CalDAV calendars, built and tested against Radicale

Readme

@m4rti21/n8n-nodes-caldav

An n8n community node for CalDAV calendars: list calendars, and create, read, update and delete events, from workflows or as a tool for an AI Agent. Built and tested against Radicale; it speaks plain RFC 4791, so other CalDAV servers work too.

Status: 0.1.0, not yet published to npm. A fork of mediabc/n8n-nodes-caldav-calendar, rewritten; see the changelog.

Operations

| Resource | Operation | What it does | | -------- | --------- | ------------------------------------------------------------------------------ | | Calendar | Get Many | Every calendar the account can see, with its path, name, colour and components | | Event | Create | A timed or all-day event, optionally recurring, optionally with your own UID | | Event | Get | One event by UID, plus any individually changed occurrences | | Event | Get Many | Events in a time range, recurring ones expanded into occurrences | | Event | Update | Change some fields; everything else (alarms, attendees, ...) is kept | | Event | Delete | An event, or a whole recurring series, by UID |

How dates, timezones, all-day events and recurrences behave is in docs/usage.md.

Install in n8n

Settings > Community Nodes > Install, then enter @m4rti21/n8n-nodes-caldav. Self-hosted n8n only: the package is published from Forgejo, without the npm provenance n8n Cloud requires.

Then create a CalDAV API credential:

| Field | Radicale example | | ---------- | ------------------------------------------------------------------------------- | | Server URL | https://radicale.example.com/ (the root, your /user/ home, or one calendar) | | Username | your Radicale user | | Password | its password |

Other servers: Nextcloud https://cloud.example.com/remote.php/dav/, Baikal https://dav.example.com/dav.php/, iCloud https://caldav.icloud.com/ (with an app password). Calendars are discovered from whatever URL you give.

Develop

Three ways in; pick one. Details in docs/development.md.

# Docker: n8n with this node loaded, next to a Radicale (tester / testpass)
npm ci && npm run build && docker compose up
# open http://localhost:5678, server URL http://radicale:5232/

# Local tooling: Node 22+ and, for the integration tests, radicale on PATH
npm ci && npm test

# Nix: everything above, plus graft and the git hooks
nix develop -c npm test

| Command | Does | | -------------------------- | -------------------------------------------------- | | npm run build | compile to dist/ and copy the icons | | npm run dev | n8n with the node hot-reloaded (n8n-node dev) | | npm test | unit and integration tests | | npm run test:unit | unit tests only, no server needed | | npm run test:integration | against a throwaway Radicale, or CALDAV_TEST_URL | | npm run lint | n8n's community-node lint rules | | npm run typecheck | tsc over source and tests | | npm run format | prettier; format:check to verify | | npm run check:ascii | fail on non-ASCII characters in source |

Environment variables are only read by the compose stack and the integration tests; the node takes everything from its credential. See .env.example:

| Variable | For | Example | | ------------------------------------------ | ------------------------------------------------- | ------------------------ | | N8N_PORT, RADICALE_PORT | host ports of the compose stack | 5678, 5232 | | GENERIC_TIMEZONE | the compose n8n's default timezone | Europe/Madrid | | CALDAV_TEST_URL | run integration tests against this server instead | http://127.0.0.1:5232/ | | CALDAV_TEST_USER, CALDAV_TEST_PASSWORD | its credentials | tester, testpass |

Layout

credentials/        the CalDAV API credential
icons/              node and credential icon
nodes/Caldav/       the node: description, operations, n8n transport
nodes/Caldav/lib/   CalDAV client, iCalendar, time and recurrence; no n8n imports
test/unit/          pure tests, no server
test/integration/   tests against a real Radicale, through the node's execute()
test/radicale/      the throwaway Radicale config and image
docs/               usage, installation, development, architecture, releasing

Docs

  • Usage: dates, timezones, all-day events, recurrences, errors
  • Installation: n8n, prerequisites, other servers
  • Development: day-to-day, tests, debugging
  • Architecture: how a request flows, and why no dependencies
  • Releasing: versioning and the Forgejo publish workflow

License

MIT, as declared by the upstream project.