projects calDAV api
KalenDAV
A lightweight, async CalDAV server built with FastAPI and SQLAlchemy — full protocol support, calendar sharing, ICS feeds, and a web calendar.
Stack
- Python
- FastAPI
- SQLAlchemy
- Docker
- Vite
- Tailwind CSS

A lightweight, async CalDAV server built with FastAPI and SQLAlchemy. Self-hostable via Docker, with a web calendar, admin UI, and ICS feed support.
Features
- CalDAV Protocol Support: Full CalDAV operations (OPTIONS, PROPFIND, PROPPATCH, GET, PUT, DELETE, REPORT, MKCALENDAR) with RFC 6764 service discovery and RFC 3744 access control
- Multiple Users & Calendars: Per-user accounts, each with multiple colour-coded calendars
- Calendar Sharing: Share calendars between users with read, write, or admin permissions
- Web Calendar: Day, week, and month views for managing events, with per-event colours and recurring events
- Recurring Events: Daily, weekly, monthly, and yearly recurrence
- ICS Feeds: Access calendars via ICS using API keys or Basic Auth
- ICS Import: Upload
.icsfiles from the web UI - Admin UI & User Dashboard: Manage users, calendars, shares, and API keys
- Async: Built on SQLAlchemy 2.0 async support
- SQLite & PostgreSQL: SQLite for development, PostgreSQL for production
Tech Stack
- Backend: Python, FastAPI, SQLAlchemy 2.0 (async), Alembic migrations
- Database: SQLite (dev), PostgreSQL via asyncpg (prod)
- Frontend: Vite, Tailwind CSS, FullCalendar JS, Jinja2
- Tooling: Docker / docker-compose (multi-stage build), pytest
Supported Clients
Works with most CalDAV-compatible clients, including Thunderbird, macOS Calendar, Outlook (via CalDAV Synchronizer), Evolution, iOS Calendar, and Android (via DAVx⁵ or KashCal). A built-in web calendar is available at /admin/calendar/.