- Short URL generation: Our service should be able to generate a unique shorter alias of the given URL.
- Redirection: Given a short link, our system should be able to redirect the user to the original URL.
- Custom short link: Users should be able to generate custom short links for their URLs using our system.
- Availability: Our system should be highly available, because even a fraction of the second downtime would result in URL redirection failures. Since our system’s domain is in URLs, we don’t have the leverage of downtime, and our design must have fault-tolerance conditions instilled in it.
- Readability: The short links generated by our system should be easily readable, distinguishable, and typeable.
- Unpredictability: From a security standpoint, the short links generated by our system should be highly unpredictable. This ensures that the next-in-line short URL is not serially produced, eliminating the possibility of someone guessing all the short URLs that our system has ever produced or will produce.
- Backend: NodeJS, ExpressJS
- Frontend: EJS(Embedded JavaScript) template engine
- Database: MongoDB