Correct across daylight saving
Availability is stored as local wall-clock time plus a named IANA zone, then resolved to instants at query time. A Tuesday 09:00 rule in Europe/London stays 09:00 after the clocks change.
Hosts publish event types and weekly availability. Invitees pick a time in their own timezone and receive a tokenised link to cancel or reschedule. Scheduling rules are enforced by the database, not by the interface.
Availability is stored as local wall-clock time plus a named IANA zone, then resolved to instants at query time. A Tuesday 09:00 rule in Europe/London stays 09:00 after the clocks change.
Overlapping confirmed bookings for a host are rejected by an exclusion constraint in Postgres. Two simultaneous requests cannot both win.
The public page reads a single security definer function that returns offerable start times only. It never sees other bookings or invitee details.
Pick a day, pick a time, submit your details. Every time is rendered in the invitee's own timezone, detected automatically and overridable.
Each event type is published at /host-slug/event-type-slug and needs no account to use.