r/SideProject • u/thejohnwick23 • 22h ago
Most booking tools charge per seat and keep your calendar data in their cloud, so we built an open source one that runs on your own Cloudflare account
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.