I needed a scheduling tool that respects privacy. So I built one.
Last month I migrated from Google to Proton. Better privacy, end-to-end encryption, and an escape from surveillance capitalism. It's been a good move.
But, as ever, migrations come with trade-offs. I relied on Google Calendar's appointment schedules for consultancy work. People could click a link, see my availability, and pick a slot. It was really simple.
Sadly, Proton Calendar doesn't offer this – but for a good reason. The whole service is private and encrypted, so there's no API for third-party tools such as Calendly or Cal.com to hook into. I was stuck.
Building instead of waiting
Timing is everything. Claude Opus 4.6 launched in early February, changing what was possible. As I've worked as a Product Manager, I understand the process of building software even if I'm not a developer myself.
I've found working with an AI assistant to be intuitive, iterative, and conversational. I described my requirements, it suggested approaches, and then I refined ideas into a Product Requirements Document (PRD). Opus 4.6 wrote the code. When something broke, I explained the problem and it fixed it.
The solution I've built is called CalAnywhere and this is how it works:
- I enter links to free/busy versions of my calendars
- Then customise booking page details (appointment length, buffer times, etc.)
- CalAnywhere generates unique booking links that I send to contacts
- Visitors see available slots pulled from calendar data
- They select a time, enter details, confirm their email, and the system creates a request
- I send them a calendar invite
Scheduler reads iCal feeds, so it works with Proton Calendar or any service supporting iCal/CalDAV standards. It doesn't store calendar data, instead checking availability in real-time and creating events only when someone books.
I have to say that email delivery took longer than expected to get working reliably, but Opus 4.6 debugged this for me. It works now and I've deployed an instance at scheduler.dougbelshaw.com, People are already using it to book calls with me.
Next steps
I've made CalAnywhere available under an AGPL-3.0 licence meaning that anyone can use it, modify it, or run their own instance.
While I could leave it there, I've had some enquiries about running this as a service, which I'm considering. Every calendar provider supports iCal links on a free/busy basis, which means that with CalAnywhere you're not sharing any private data. It also means no fiddly setup, no third-party account access, and no vendor lock-in.
If I do offer a hosted service with premium features, the base tool will stay free and open. The subscription service will handle hosting – probably with features like custom branding and the ability to for people booking a slot to compare your schedule with theirs.
I'm sharing CalAnywere for a couple of reasons:
- Feedback and iteration – if you try CalAnywhere, what works? what breaks? what's missing that would make it more useful?
- Possibility and agency – if there's a gap between the tools you want and the tools that exist, there's a very good chance can probably build something yourself these days. AI coding assistants have come a long way very quickly, and have changed what's within reach for people who aren't professional developers.
CalAnywhere exists because I needed it and could build it. Maybe you've been thinking “someone should make a tool that does X.” Maybe that person is you?