Thursday's SMS
Pantry sells groceries online. Every Thursday the marketing team sends the week's offers by SMS to 40,000 customers, and the link in the message is the full address of the offers page: 212 characters. Some phones cut it in half, and its length makes every message cost two SMS instead of one.
Maya runs the campaigns. She wants the team's own short links, an address of your service followed by a code of at most eight letters and digits, and she wants to know how many times each one was opened. On Friday that number is how she shows the campaign worked.
What it has to put up with
A link is created once and opened thousands of times, most of them in the hour after the SMS goes out. Once the message is sent the link can't be fixed: it is already on 40,000 phones, so it has to keep working through every deploy after that.
Only the team may create links. A shortener anyone can use gets found and filled with phishing links within weeks.
Not the job
No accounts per person, no custom codes, no expiry, and no analytics beyond the count: who clicked and when can wait.
Language, framework, database, how codes are made, how the service knows the team from everyone else and where it runs are yours to choose. Write the choices down in DESIGN before you build.