Your booking page.
Actually yours.
Calstead is a self-hosted scheduling page that reads availability from any calendar with an ICS feed – Proton, Fastmail, iCloud, Google, Outlook. Deploy it to your own Vercel account in about 15 minutes with a guided wizard. Pay once. No per-seat rent.
One-time purchase · 14-day refund · runs on free tiers
I built Calstead after every Calendly-class tool I tried broke against my Proton Calendar – and I'd had enough of renting other people's booking software to find out. I'm a consultant, not a scheduling company. Calstead's only real assumption is that your calendar can publish an ICS feed, which every calendar can. It has run my client bookings every day since.
Everything a booking page needs. Nothing it doesn't.
Live ICS availability
Busy times come straight from your calendar's ICS feed on every request. Merge as many calendars as you want – personal, client, team.
Real calendar invites
Both sides get an email confirmation with a proper ICS invite attached. Cancellations send proper cancellation events, too.
Reschedule & cancel links
Token-based manage links – your guests never create an account or log in to change a meeting.
Meeting links your way
Point it at a permanent room (Whereby, Zoom, Jitsi) or have it mint a fresh Google Meet per booking via OAuth, with automatic fallback.
Guest calendar overlay
Guests can optionally connect Google or Outlook to see their own conflicts while picking a slot. Busy-times only, ephemeral, revoked after booking.
/nextopen
A private page with your next open slots as copy-pasteable rich-text links. Paste into any email and the links survive Gmail and Slack.
Spam protection
Optional Cloudflare Turnstile on the booking form. Two env vars and it's on; leave them unset and it's gone.
Config as code
Event types live in one commented TypeScript file – durations, working hours, buffers, locations. Your editor is the admin panel.
Updates via git pull
Your config lives in env vars and a local file upstream never touches. Pulling updates doesn't conflict with your setup.
Self-hosting, minus the yak-shaving
You need to be comfortable with git and a terminal. That's the whole prerequisite list.
Buy it, clone it
Checkout takes your GitHub username and invites you to the private repo. git clone and it's on your machine.
Point it at your calendar
Copy your calendar's ICS feed URL – the docs show exactly where it hides in Proton, Fastmail, iCloud, Google, and Outlook.
Run the wizard
npm run setup walks through every setting and checks each one live: it fetches your calendar, pings your database, sends you a test email. Free tiers of Vercel, Neon, and Resend cover the whole stack.
Share your link
meet.yourdomain.com is live. Your Vercel account, your database, your domain – no Calstead servers anywhere in the loop.
Stop renting your booking page
| Calendly | Cal.com self-host | Calstead | |
|---|---|---|---|
| What it costs | $144+/year, forever | Free – if you can run the monorepo | $59, once |
| Works with Proton / Fastmail / any ICS | Limited | Partial | Yes – ICS is the whole design |
| Who holds your data | They do | You (if self-hosted) | You – your DB, your domain |
| Time to deployed | Minutes (then invoices) | A weekend, maybe | ~15 minutes, guided |
Pay once. git pull forever.
Both tiers include the full source, all features, and free updates.
Personal
$59 once
- ✓ One person's booking pages
- ✓ Unlimited deployments for yourself
- ✓ Private repo access + updates
- ✓ Email support
Team
$149 once
- ✓ Up to 25 people in one organization
- ✓ Unlimited deployments
- ✓ Up to 5 GitHub accounts on the repo
- ✓ Priority email support
Secure checkout by Stripe · instant GitHub repo access · 14-day refund policy · license terms
Questions you'd probably ask
Do I need to know how to code?+
You need to be comfortable with git, a terminal, and environment variables. You don't need to write code – the setup wizard and one commented config file handle everything. If 'git clone' sounds like a normal Tuesday, you're the audience.
Which calendars work?+
Anything that publishes an ICS feed: Proton Calendar, Fastmail, iCloud, Google Calendar, Outlook, Nextcloud, and most others. You can merge several feeds into one availability view.
What does it cost to run?+
Usually nothing beyond the license. The free tiers of Vercel (hosting), Neon (Postgres), and Resend or Mailgun (email — your account, your sending domain) cover a personal booking page comfortably. A custom domain is whatever your registrar charges.
How do updates work?+
The private repo is the distribution channel. Add it as a git remote and pull whenever you like – your configuration lives in env vars and a local file upstream never touches, so updates don't conflict.
What can't I do with it?+
Republish the source, resell it, or run it as a hosted scheduling service for other people. Deploying it for yourself (or your org, on Team) is exactly what it's for. Plain-English summary on the license page.
What about my guests' data?+
Bookings live in your Postgres database, on your account. If guests connect their calendar to check conflicts, Calstead reads busy-times only, keeps the token in an encrypted cookie for at most an hour, and revokes it after booking.
I typo'd my GitHub username at checkout.+
The confirmation email links to a self-service page where you can fix the username or resend the invite. No support ticket needed – though hello@calstead.com answers those too.
Refunds?+
14 days, full refund, no interrogation. Refunding ends the license, so you'd delete your copy.
Five months of Calendly rent buys it outright.
One purchase, one repo invite, one wizard run. Then it's just your booking page, on your domain, for good.