Scoping

  1. Define functional and non-functional requirements. “User should be able to…” vs. “system should be able to …“. Prioritize the top 3 functional requirements:
    • Users view events

    • Users search for events

    • Users book tickets for events

    • Prioritize availability for search/viewing, and consistency for booking

    • be scalable and handle popular events (10 million users for 1 event)

    • low latency search

    • read heavy - support high read throughput

API design

  1. Define core entities and fields (users, events, performers, venues, tickets, bookings)
  2. Define endpoints - GET events by ID, GET events by search via parms, POST for creating a booking with tickets/user/payment info
  3. Specify how the API is used to fulfill the functional requirements by defining flow, services, backend