Skip to content

Instantly share code, notes, and snippets.

@iremkorkmaz
Last active November 18, 2025 19:23
Show Gist options
  • Select an option

  • Save iremkorkmaz/c56cdf9e84848f512eb20a99a1983294 to your computer and use it in GitHub Desktop.

Select an option

Save iremkorkmaz/c56cdf9e84848f512eb20a99a1983294 to your computer and use it in GitHub Desktop.

System Design Challenge – Booking Management System

What to Expect

Duration: 60 minutes
Format: Collaborative system design discussion
Challenge: Design a booking management system based on the given requirements.


The Challenge

The Problem

Design a basic booking management system for medical practices that allows users to search availability, reserve slots, book appointments, cancel appointments, and receive notifications.


Current System Context

Functional Requirements

  • Users can search for availability by date and practice
  • Users can reserve an appointment slot for a short duration
  • Users can book the reserved appointment slot
  • Users can cancel the booked appointment
  • Users get confirmation and reminder notifications

Technical Requirements (Non-Functional)

  • Consistency: High reliability on bookings, no double-bookings
  • Availability: Highly available on read, writes must be consistent
  • Latency: Low latency for search and availability
  • Scale: Thousands of concurrent users and bookings
  • Auditability: All booking actions must be auditable

Key Questions to Consider

  • How do we prevent double-bookings, especially under concurrent requests?
  • How do we keep search and availability low latency while the system scales to thousands of concurrent users?
  • How should short reservation holds be modeled and handled when they expire or are released?
  • How should we recompute or update availability when appointments or schedule rules change (e.g., new rules, canceled appointments)?
  • How do we ensure notifications (confirmation and reminders) stay correct when appointments are updated or canceled?
  • How do we provide a reliable audit trail for all booking-related actions (search, hold, book, cancel)?
  • How do we handle time zones so that users book the correct slots regardless of their local time?

Session Structure

Phase 1: Requirements Clarification (10 minutes)

Clarify the five functional requirements:

  1. Searching availability
  2. Reserving slots
  3. Booking reserved slots
  4. Canceling appointments
  5. Sending confirmation and reminder notifications

Phase 2: High-Level Architecture (20 minutes)

Design an overall architecture that supports:

  • Availability search
  • Short-term reservation (hold) creation
  • Booking workflow
  • Cancelation workflow
  • Notification triggering

Phase 3: Detailed Design (20 minutes)

Deep dive into the functional flows:

  • How availability is searched
  • How reservation holds are created and expired
  • How a reserved slot becomes a booked appointment
  • How cancellations are processed
  • How confirmation and reminder notifications are generated

Phase 4: Implementation & Operations (10 minutes)

Discuss operational considerations for:

  • Availability search
  • Reservation expiration
  • Booking operations
  • Cancelation processing
  • Notification delivery
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment