finds.dev← search

// the find

thunderbird/appointment

★ 539 · Python · MPL-2.0 · updated Jun 2026

Invite others to grab times on your calendar. Choose a date. Make appointments as easy as it gets.

Thunderbird Appointment is Mozilla's open-source Calendly alternative, built as part of the Thunderbird Pro services. FastAPI backend with a Vue 3 frontend, Docker-first setup, and support for CalDAV, Google Calendar, and Zoom. It's aimed at people who want self-hosted scheduling without handing their calendar data to a VC-backed SaaS.

The migration history is thorough and well-dated — 50+ migrations going back to 2023, which means the schema has been evolved carefully rather than nuked and rebuilt. Celery + Redis for async tasks is the right call for something that needs to fire booking confirmation emails and renew Google Calendar watch channels without blocking the request. The Fluent-based i18n (Python fluent) is a better choice than most projects make — it handles pluralization and gender agreement in ways that gettext doesn't. E2E test suite covers Chrome, Firefox, Safari, Android, and iOS in separate nightly workflows, which is unusually thorough for a project at this star count.

The invite system was just removed in a Feb 2026 migration, which means the growth model changed significantly mid-stream — if you're self-hosting for a team, the onboarding story is now unclear. Docker-only development is a real friction point; there's no path to running the backend with just `uv run` against a local Postgres, which slows down backend contributors who don't want the full 5-container stack. The frontend is a separate Vue app served by Nginx in a second container rather than being served from the FastAPI backend, which is fine for the hosted product but adds operational complexity for self-hosters. CalDAV support exists but the docs are thin — the caldav route file is there, but there's no README explaining which servers are tested and what the known quirks are.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →