System design interview questionMediumCollaborative System

Design a Calendar System like Google Calendar

Design Google Calendar-style events: create meetings, check availability, and notify attendees.

Interview scope

Client β†’ Gateway/LB β†’ App β†’ Cache (hot agendas) + DB (events) + Message Queue (reminders/invites). No Client β†’ DB.

Functional requirements

  • Create/update/cancel calendar events.
  • Query a user’s agenda for a time range.
  • Notify attendees when events change (async ok).

Scale and quality goals

  • Agenda reads should be fast (cache helps).
  • Event truth lives in a durable DB.
  • Notifications should not block the write API forever.

Capacity assumption

Design for this scale

Assume ~20M event reads/day (~230 RPS) and ~2M event writes/day (~23 RPS average).

Practice more than a diagram

Place components on the Froquiz canvas, connect the data flow, and see which decisions the scenario-specific review finds missing. The full exercise and review unlock with Premium.

Explore Premium β†’