Skip to content

Overview

What Kalendee is, who it is for, and what the web app does today.

Kalendee is a self-hosted calendar application written in Kotlin Multiplatform. It is made of a Ktor server, a themeable web UI, and a set of work-in-progress Compose Multiplatform clients. When you run Kalendee you own the server, the database, and the events on it.

What Kalendee is

The project has three long-term pieces:

  • A self-hosted CalDAV server with first-party clients for Android, iOS, and Desktop, in the spirit of Notion Calendar / Cron.
  • A themeable web UI that runs in any browser and talks to the same server.
  • A pure multiplatform Kotlin CalDAV library implementing the protocol separately from the server and clients.

The server is real: it stores calendars, events, shares, organizations, invites, and notifications in PostgreSQL and exposes them through a JSON API at /api/v1. The web UI consumes that API and is the client to use today.

Who it is for

Kalendee is aimed at people and small groups who would rather run their own calendar than rent one:

  • Individuals who want their week view, sharing, and scheduling on their own infrastructure.
  • Small teams and clubs that need shared calendars, organizations, and availability without a SaaS account.
  • Self-hosters who are comfortable running a server and PostgreSQL.

It is not a drop-in replacement for a hosted calendar service yet. See What works today for the honest list.

The self-hosted CalDAV pitch

“Self-hosted CalDAV” describes where the project is going. The web UI today speaks the server’s JSON API, not CalDAV. The CalDAV protocol (RFC 4791 and iCalendar) is planned as a separate pure-KMP library and is not implemented in this repository yet. That means you cannot point Apple Calendar, Thunderbird, or another CalDAV client at a Kalendee instance today. The intended shape — a self-hosted server, first-party clients, and a reusable protocol library — is described in GOALS.md.

What works today

The following is implemented in the web UI and server:

AreaWhat you getGuide
AccountsRegistration (configurable), sign-in, sessions, optional/soft/required email verification, avatarsGetting started, Accounts and security
CalendarsPersonal calendars with color and time zone; hide/show; deleteCalendars and events
EventsDay/week/month views, timed and all-day events, notes, links, drag to create/move/resize, remindersCalendars and events
RecurrenceDaily/weekly/monthly/yearly series with interval, end date, or occurrence countRecurring events
SharingPer-user read/write shares and friendsSharing and following
Public accessRevocable read-only calendar links, public pages, RSS feeds, per-user and per-calendar visibilityPublic access
OrganizationsMembers, invitations, owner/admin/member roles, teams and team calendar grantsOrganizations
Groups and quotasAdmin-managed groups with storage quotasGroups and quotas
SchedulingOffice hours, slot requests, accept/decline that creates a meetingAvailability and scheduling
Invites and RSVPInvite users or email addresses, yes/no/maybe, open RSVP linksEvent invites and RSVP
NotificationsIn-app notifications with an unread badge, plus browser reminders while the app is openNotifications
External calendarsRead-only Discord server event importExternal calendars
Directory and profilesPublic directory, /u/{username} profilesDirectory and profiles
ThemingPer-user accent color on a daisyUI themeTheming

The web UI is the only complete client. The Android, iOS, and Desktop Compose apps are still the template scaffold; see Clients.

What is planned

The following are goals, not shipped features. Each is tracked in GOALS.md:

  • The CalDAV protocol library and real protocol endpoints.
  • The Compose clients (Android, iOS, Desktop) beyond the current scaffold.
  • External calendar providers beyond Discord: Google, Microsoft, Apple iCloud, generic CalDAV, and ICS subscriptions.
  • Native (OS-level) notifications instead of browser notifications only.
  • A federated social direction: following users as well as calendars.
  • Optional per-calendar RSS toggles (an RSS feed already exists for every public calendar).

How these docs are organized

  • Product (this section) is written for people using or evaluating Kalendee. It covers the web UI feature by feature.
  • Self-hosting covers deployment and configuration. It is documented separately because it is only relevant once you run your own server.
  • Referenced design documents such as External calendars describe planned architecture as well as what shipped, and say which is which.

Edit this page on GitHub