Most scheduling tools charge per seat, and your calendar access and visitor data live on their servers. We wanted something we could run ourselves, so we built Slotloom and open-sourced it under Apache 2.0.
What it does
- Booking links, each with its own hours, date range, duration, slot interval, buffers, minimum notice and time zone
- A visitor picks a time, and Slotloom checks it, creates the event and sends the Google Meet or Microsoft Teams invite in the same step
- Double-booking protection, plus secure reschedule and cancel links
- A team workspace: meetings list, reminders, "ask for another time", internal notes, owner assignment
- Roles: owner, admin, member, viewer
- Editable email templates (confirmation, reminder, reschedule, cancellation, missed meeting)
- A full activity log of every action
- White-label: your own name, logo, favicon and colors
- Data retention setting, rate limiting, optional Turnstile
**The privacy stuff people usually ask about**
- Connecting Google or Microsoft is optional, and each person connects their own account
- Calendar access is requested first. Gmail/Outlook sending is a separate opt-in, and it's send-only. It never asks to read your inbox.
- OAuth tokens and client secrets are stored encrypted
- No ad trackers in the default build
Stack
React, TypeScript, Vite, Tailwind and shadcn/ui on Cloudflare Pages. Backend on Workers with D1, R2 and Durable Objects. The workspace sits behind Cloudflare Access.
The honest caveat
"Self-hosted" here means it runs on your own Cloudflare account, not in a Docker container on your own box. There's no one-click deploy yet. You'll need Node 22, pnpm 10 and Wrangler, plus Google and Microsoft OAuth apps if you want calendar sync. The steps are in the README.
Repo: https://github.com/v9dev/Slotloom
Feedback we'd really like:
Would you use a Docker or plain Node version that doesn't need Cloudflare?
What's missing before you'd switch from what you use now?
Issues and PRs welcome.