Skip to main content

Calendars

MijnBureau supplies an installation of Calendars, the calendar and scheduling application from LaSuite. It combines a Django REST API, a React single-page frontend and a SabreDAV CalDAV server. The CalDAV server stores calendar data in PostgreSQL and the Django backend proxies CalDAV requests, so desktop and mobile calendar clients can synchronize through the same hostname as the web application.

Configuration​

To configure this solution, you can override the default settings for your environment. The defaults are located in the folder helmfile/environments/default.

NameDescription
global.domainThe domain name of your MijnBureau instance
global.hostname.calendarsThe subdomain of the Calendars frontend and CalDAV API
application.calendars.enabledEnable Calendars
application.calendars.namespaceThe Kubernetes namespace name
application.calendars.secretKeyDjango secret key
application.calendars.saltKeySalt used to encrypt sensitive fields
application.calendars.caldav.*Internal CalDAV API keys
authentication.client.calendars.*OIDC client credentials
database.calendars.*PostgreSQL connection details
cache.calendars.*Valkey connection details
tls.calendars.*TLS settings
pvc.calendars.*Storage requirements for PostgreSQL and Valkey
resource.calendars.*Resources for each component
autoscaling.horizontal.calendars.*Autoscaling for the backend, worker, frontend and CalDAV server
container.calendars_*Container image selection
secret.calendars.*Django admin credentials

Components​

ComponentDescription
BackendDjango REST API, OIDC authentication and CalDAV proxy (gunicorn)
WorkerDramatiq background worker for imports, synchronization and email
FrontendReact single-page application served by Caddy
CalDAVSabreDAV server that stores calendars and events in PostgreSQL

The backend and worker share a PostgreSQL database. The CalDAV server stores its tables in the sabre schema of the same database and initializes the schema on startup.

CalDAV clients​

Point CalDAV clients at:

https://<calendars-hostname>/.well-known/caldav

Clients authenticate with CalDAV channel credentials created from the application. The Django backend validates those credentials and forwards requests to the internal CalDAV server. The web application itself signs in through Keycloak.

More information​