Requirements


Functional Requirements:


  • Create a short URL for a given long URL.
  • Return the long URL associated with a given short URL.



Non-Functional Requirements:


  • Low and predictable latency
  • proper state machine handling


API Design

send the url, get the url



High-Level Design

we need to have a client, a server and it takes the client provided url, shortens with some processing and then sends the shortened url



Detailed Component Design