Project
Roulette

Booking Calendar

Pick a slot across timezones without anyone getting the wrong hour.

AdvancedWeb appProductivity14–30hAI-buildable 3/5no setupworth shipping

An appointment booker showing available slots from a set of rules, in the visitor's own timezone. Timezone handling is where booking apps go wrong, and doing it correctly — including across a daylight-saving boundary — is the substance of the project.

UI
Logic
Useful

Hosting · Free forever

Deploys free on GitHub Pages, Cloudflare Pages or Vercel Hobby.

Deploy it and share a link.

Core features · 7

  • Availability defined as weekly rules plus exceptions
  • Available slots render on a date picker
  • Slots display in the visitor's detected timezone with the zone named
  • Booking a slot removes it from availability
  • Buffer time between appointments is respected
  • Daylight-saving transitions don't produce missing or duplicated slots
  • A confirmation summarises the booking in both parties' timezones

The interesting part

  • Slot generation across daylight-saving boundaries
  • Displaying one instant in two timezones without ambiguity
  • Preventing double-booking when two people book simultaneously

Once it works

  • Add multiple appointment types with different durations
  • Add an ICS calendar file download
  • Add a reschedule and cancel flow

Suggested stack

reacttypescripttailwinddate-fnssupabase

Track it