Shortening: Given a long URL, the system should generate a shorter, unique alias.

Redirection: When a user accesses a short link, the system must redirect them to the original long URL with minimal latency.

Custom Aliases: Users should optionally be able to provide a custom short link (e.g., short.ly/my-link).

Link Expiration: Links should have a default or user-defined expiration date, after which they are purged.