shortening url
retrieving the original url
availability
scalability
POST /api/v1/short
request {
"url" : "example.com/very/long/url"
}
response {
"short_url": "shorten.com/abc123"
}
POST url /api/v1/long -> sen short URL -> receive original URL
You should identify enough components that are needed to solve the actual problem from end to end. Also remember to draw a block diagram using the diagramming tool to augment your design. If you are unfamiliar with the tool, you can simply describe your design to the chat bot and ask it to generate a starter diagram for you to modify...
Dig deeper into 2-3 components and explain in detail how they work. For example, how well does each component scale? Any relevant algorithm or data structure you like to use for a component? Also you could draw a diagram using the diagramming tool to enhance your design...
CREATE TABLE users (
user_id INT PRIMARY KEY
password TEXT
email TEXT
registered_at DATETIME
modified_at DATETIME
)
CREATE TABLE urls (
short_url TEXT PRIMARY KEY
long_url TEXT
user_id INT FOREIGN KEY
created_at DATETIME
expired_at DATETIME DEFAULT NULL
)