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