Skip to content
AGPL-3.0-only · Self-hosted

Your calendar, on your server.

Kalendee is a self-hosted CalDAV server with first-party Kotlin Multiplatform clients for Android, iOS, and Desktop, plus a themeable web UI built on Keel. Own your data, link the calendars you already use, and let people propose times without handing everything to someone else's cloud.

Built for running it yourself

The server, the clients, and the protocol library are one project. Pick the pieces you want and host the whole thing.

Server

Self-hosted CalDAV

Run your own calendar server on your own infrastructure. Revocable public read-only links, invitations with view or edit access, and a public calendar page that opens without an account where you allow it.

Clients

Native KMP clients

First-party Kotlin Multiplatform clients for Android, iOS, and Desktop share one Compose Multiplatform UI, in the spirit of Notion Calendar / Cron — not a wrapped web app.

Web

Themeable Keel web UI

The same product in a browser, built as a Keel pack. Themes are a user-facing preference, so the clients and the web UI match end to end.

Scheduling

Scheduling proposals

Link your calendar and let people propose times against it. Access is configurable: anonymous visitors, logged-in users only, or off.

Storage

S3 / R2 object storage

Avatars and profile pictures live in S3-compatible storage and are proxied through the server, so clients never hold credentials and the bucket stays private.

Email

Optional Cloudflare email

Account verification, security alerts, calendar invites, and follower activity can go out over your own transactional email provider. Disabled, mail is logged instead.

A look at Kalendee

Preview graphics of the week view, event dialog, and public calendar page, served from /screenshots/. They are stand-ins until real screenshots are captured from the seeded demo data.

Week view
Event dialog
Public calendar page

Self-host in minutes

The production compose file pulls the published image and runs PostgreSQL 17 next to it. Copy the example environment, set a few secrets, and start it.

cp .env.example .env
# set POSTGRES_PASSWORD / KALENDEE_DATABASE_PASSWORD,
# KALENDEE_ADMIN_PASSWORD, and KALENDEE_PUBLIC_URL
docker compose up -d

Full setup, clients, and configuration are in the documentation. Licensed under AGPL-3.0-only .