YouCanBookMe
Replaceable in one session with an AI coding agent.
A booking page tied to a calendar: publish your availability, let people pick a slot, and have the meeting written into both calendars with reminders sent beforehand.
Build me a booking page that replaces YouCanBookMe: availability from my calendar, a slot picked by somebody else, and the meeting in both calendars. STACK - Node 20+ with Fastify, server-rendered HTML with a little vanilla JS - SQLite through better-sqlite3, WAL mode - Caddy in front THE DATA MODEL - users: id, name, slug, email, timezone - event_types: id, user_id, slug, title, description_md, duration_minutes, buffer_before, buffer_after, min_notice_minutes, max_days_ahead, max_per_day, location_kind, location_value, requires_confirmation, is_active - schedules and availability_rules: weekday, start_local, end_local, with a named zone - date_overrides: id, user_id, date, is_unavailable, start_local, end_local - bookings: id, event_type_id, uid, starts_at_utc, ends_at_utc, attendee_name, attendee_email, attendee_timezone, answers_json, status, cancel_token, reschedule_token, external_event_id, created_at - calendar_connections: id, user_id, provider, credentials_encrypted, calendar_ids_json, write_calendar_id, sync_token, last_synced_at - busy_blocks: id, connection_id, starts_at_utc, ends_at_utc, source_event_id, is_all_day, transparency, fetched_at — intervals only, never event details - reminders: id, booking_id, kind, scheduled_for, sent_at, error TIME, WHERE THIS GOES WRONG - Every instant in UTC. Availability rules as local times with a named zone, because 09:00 in Europe/Rome is a different instant in July and in January - A real time zone library and the IANA database. Never an offset - The test suite includes a spring-forward day, an autumn-back day, and a zone whose rules changed - All-day events are dates, not midnight instants — the classic bug in this category CALENDARS - Two-way with the major providers, read-only ICS for anything else - Incremental sync with the provider's sync token, plus a full reconcile on a schedule, because incremental sync drifts - Recurring events expanded properly, with exceptions and moved instances. A wrongly expanded weekly meeting means double bookings for a year - Declined and tentative events: decide whether they block, per connection, and say so - Write the booking to a chosen calendar with the attendee invited, and update or delete it when the booking changes SLOT GENERATION - One pure function: rules minus busy blocks minus existing bookings with buffers, then notice, horizon and daily cap, rounded to an increment. No database access inside it, tested heavily - A hold while the form is filled, released after a few minutes; the final insert re-checks availability inside the transaction. The hold is a courtesy, the transaction is the guarantee BOOKING - Pick a day, pick a slot, answer the questions, confirm. No account, ever - Custom questions per event type, validated on the server - Cancel and reschedule from long random tokens in the email REMINDERS - Rows written when the booking is created and rewritten if it moves, at fixed offsets - Email always, and SMS if you have a provider — that is a per-message cost and a registered sender in most countries, so decide deliberately - A confirm-or-cancel link in the reminder, so a cancellation reaches you instead of an empty slot - Every send recorded, so nobody is reminded twice OPERATIONS - .env: DATABASE_PATH, BASE_URL, ENCRYPTION_KEY, SESSION_SECRET, SMTP_URL, provider client ids and secrets - Migrations on boot, each once; nightly backup off the machine, restore script - Health endpoint that generates tomorrow's slots and reports sync age WHAT MATTERS MOST Recurrence expansion and the booking transaction. Write the time zone tests before the interface exists, then have two browsers book the same slot at once and confirm exactly one succeeds.
What you lose
- Two-way sync with the major calendars, including the recurrence rules that break naive implementations
- Time zones and daylight saving handled correctly, which is where homemade schedulers fail
- Reminders that actually arrive, which is what prevents a no-show
- A booking page that works on any phone without anybody signing in
If you would rather not build
- A read-only ICS feed plus a slot generator, which covers a personal booking page
The escape hatch
open source · no votes, no paid placement
Cal.com
$0Open-source scheduling with two-way calendar sync and team pages.
calcom/cal.comfree · open source
Easy!Appointments
$0A self-hosted appointment scheduler with provider and service management.
alextselegidis/easyappointmentsfree · open source
Why this verdict
our own opinion · changed only by a person
82/100
Verdict yes at 82: the same shape as every scheduler in this catalogue. Slot generation is a pure function and the calendar sync is where the fortnight goes.
History
tracked since 14 Aug 2026 · nothing is ever overwritten
Nothing recorded yet. This chart fills in once the page has visitors, votes or prompt copies — it will not draw a flat line to look busy.
Questions about YouCanBookMe
answered from the record above
Is YouCanBookMe free?
No — the plan we track is $12 a month. Paid from around $12 per calendar per month billed monthly, cheaper annually; a free tier covers one calendar with branding.
Can you replace YouCanBookMe by building your own?
YES. Replaceable in one session with an AI coding agent. Replacement score 82 out of 100, build time one session. Read what you lose before you decide.
How much does YouCanBookMe cost?
$12 a month on Individual — $144 a year. Recorded 14 Aug 2026.
What do you lose by replacing YouCanBookMe?
Two-way sync with the major calendars, including the recurrence rules that break naive implementations; Time zones and daylight saving handled correctly, which is where homemade schedulers fail; Reminders that actually arrive, which is what prevents a no-show; A booking page that works on any phone without anybody signing in. If any of those carry weight for you, keep paying.
Is there an open-source alternative to YouCanBookMe?
Yes: Cal.com, Easy!Appointments. The prompt on this page is for when you want it your way instead.
Related entries
same category first, most replaced first
Every week, something stops being worth paying for.
New verdicts, prices that moved, entries added. One email a week. Unsubscribe in one click. Nothing is being sent yet — your address is kept here, and the first issue is the first thing it is used for.
free forever · no tracking pixel · stored here, never passed to anyone

