oha.link is a simple link shortener written in Node.js using some ES6 functionality. It uses MongoDB and has a minimalistic web UI.
Dependencies: MongoDB, Mocha+Chai.
RequestController.js -> HTTP requests get routed here and the appropriate functionality called.
ShortenerController.js -> Calls all the needed stuff to shorten & save links.
Database.js -> Contains logic for interacting with the DB - connecting, saving, searching.
RandomGenerator.js -> Contains logic for generating random strings for the short URLs.
RoutingLogic.js -> Lots of conditions have to be fulfilled to route requests, so logic for routing them goes here.
Shortener.js -> Contains logic for all things needed when generating a short URL - checking if the generated string is a duplicate, checking if a given URL is already shortened, saving a short URL to the DB, etc.
StaticPageServer.js -> Contains logic to retrieve and serve the homepage static file.
Serve homepage
1. Look for the given short URL in the DB.
If FOUND, redirect to short URL.
If NOT FOUND, return 404.
1. Look in DB for URL
If FOUND, return shortURL
If NOT FOUND, generate random string for a new short URL.
Look in DB if it is a duplicate of previously shortened link.
If a duplicate is FOUND, generate a random string again.
If a duplicate NOT FOUND, save the pair url:shortURL and return the short URL.
Return 404.