Build idea · Intermediate
A booking page
Your own Calendly, minus the per-seat pricing.
A public page where someone picks an open slot, enters their details, and books a meeting with you — while your calendar quietly refuses to double-book. The whole project lives or dies on one hard feature: correctly computing available slots from your rules (working hours, buffers, existing bookings) and holding the slot atomically so two people racing for 3pm Tuesday can't both win.
What you'll learn
- →Modeling availability as data — working hours, buffers, and blackout dates — instead of hardcoding a schedule, then generating open slots from it
- →Timezones done right: store everything in UTC, render in the visitor's local zone, and never trust the browser clock for what's actually free
- →Preventing race conditions with a database-level unique constraint or transaction so the same slot can't be booked twice
- →Transactional email as a real product surface — sending a confirmation with a cancel/reschedule link the moment a booking lands
Take it further
- +Take a deposit at booking time with Stripe, and auto-cancel the slot if payment doesn't clear
- +Two-way sync with Google Calendar so slots you book elsewhere disappear from your page automatically
- +Add reschedule and cancel flows behind signed links, plus a 24-hour reminder email sent by a scheduled job