Calendar
Research
Calendar engineering guide

Building a scheduler on top of calendar APIs

A scheduler is an availability and booking policy engine layered over connected calendars; reading events is only one input, not the scheduling product itself.

Research surface only. This guide documents architecture and evaluation criteria; it does not describe a released DewEngine connector.
01
Availability

Compute slots from busy time and product policy

Query provider free/busy data where possible, merge all selected calendars, then apply working hours, meeting duration, buffers, minimum notice, date horizon, and the organizer's IANA time zone.

  • Busy intervals from each selected calendar
  • Working hours and exceptions
  • Buffers and minimum notice
  • DST-safe time-zone conversion
02
Booking

Recheck before creating the event

Availability becomes stale between page load and confirmation. Re-read the candidate interval, acquire a short booking lock, create the provider event with an idempotency key, and release the lock only after recording the result.

03
Event semantics

Preserve attendees, conferencing, and ownership

Record which connected account organizes the meeting, attendee response state, provider event ID, calendar ID, time zone, location, and conference data. Invitations and updates must originate from an identity the provider authorizes.

04
Change handling

Treat reschedule and cancellation as synchronized workflows

Consume provider changes, detect organizer-side edits, update the booking record idempotently, and notify the product. Recurring meetings, moved instances, declined attendees, and deleted events need explicit states rather than a generic update flag.

  • Provider change cursor
  • Cancellation tombstone
  • Recurring master and instance identity
  • Notification and retry audit
Questions

Before you build.

Can free/busy alone power a scheduler?+

No. It supplies busy intervals. The scheduler still owns working hours, buffers, notice, routing, capacity, time zones, conflict checks, and booking policy.

How do I prevent double booking?+

Recheck availability immediately before creation, serialize competing reservations for the same owner and slot, and make the provider create command idempotent.

Can I use DewEngine's calendar connectors today?+

Not as released connectors. Google Calendar has one feature-flagged development method, calendar.event.create, plus list/get for DewEngine-confirmed creates and the resulting canonical creation event. Provider calendar reads and sync, update/delete, availability, recurrence, watches, and Microsoft Graph Calendar remain planned. The implemented slice has only local fake-provider evidence, not real-account or production conformance.

Build with us

Does this match the workflow your users need?

DewEngine is in development. Real use cases decide what ships first.

Share your use case