Files
eleith e11ef0d16f
ci/woodpecker/pr/calendar Pipeline was successful
ci/woodpecker/pr/cli Pipeline was successful
ci/woodpecker/pr/config Pipeline was successful
ci/woodpecker/pr/db Pipeline was successful
ci/woodpecker/pr/jobs Pipeline was successful
ci/woodpecker/pr/video-chat Pipeline was successful
ci/woodpecker/pr/web Pipeline was successful
ci/woodpecker/pr/worker Pipeline was successful
ci/woodpecker/push/calendar Pipeline was successful
ci/woodpecker/push/cli Pipeline was successful
ci/woodpecker/push/config Pipeline was successful
ci/woodpecker/push/db Pipeline was successful
ci/woodpecker/push/jobs Pipeline was successful
ci/woodpecker/push/video-chat Pipeline was successful
ci/woodpecker/push/web Pipeline was successful
ci/woodpecker/push/worker Pipeline was successful
feat(config): make Docker onboarding YAML-first
2026-11-01 19:04:16 -08:00

1.9 KiB

📅 When

Appointment scheduling for one person. You, probably.

When's homepage with two meeting types and their available lengths

More screenshots.

A public booking page, an admin UI, Google and CalDAV calendars, and email notifications. Configure it in YAML. Keep your appointments in SQLite.

No teams. No round-robin routing. No subscription to your own calendar.

Get started

You'll need Docker Compose 2.24 or newer. In a fresh directory:

mkdir when
cd when
mkdir config data public
curl -fsSLo compose.yaml https://git.eleith.com/eleith/when/raw/branch/main/docs/compose.yaml
curl -fsSLo config/when.yaml https://git.eleith.com/eleith/when/raw/branch/main/docs/when.example.yaml
chmod 600 config/when.yaml

Edit config/when.yaml: your public HTTPS URL (url.app), admin password, owner details, SMTP account and calendar. No .env file is required.

Put a trusted reverse proxy in front of When; see the proxy requirements. Keep your config private and readable by container UID 1000; make data/ writable by that UID. See permissions.

docker compose up -d

Open your public proxy URL and its /admin page to get a lay of the land. Optional environment interpolation, port overrides and persistent sessions are covered in deployment.

There is a lot more going on under the hood, read more documentation if you want to learn more.

Documentation