FireLink Architecture Diagram
FireLink View Flow Diagram
FireLink was inspired by a need to organize multiple sets of links for separate college courses. Often times courses would require numerous links to be readily available at any given time. Obviously, this became a problem fast as a separate set of links for each course would require you to keep an unreasonable number of tabs open concurrently. Enter FireLink! A solution to this mess.
What it does
FireLink is a chrome extension that allows users to take any number of links and condense them down to a single, 16 character, alpha-numeric code. This code can then either be bookmarked by the user, under a uniquely assigned name, or shared amongst other FireLink users. After this code is generated/received, it can then be entered into our extension, to reopen the links originally used to generate the code.
How we built it
When a user clicks the button to generate a new FireLink, a request is sent to a Java web server, acting as a wrapper around a MySQL database, that will calculate the MD5 hash of all the links that the user is trying to condense, concatenated together. The web server will store the hash and the string of the concatenation of all the links into a table in a MySQL database. After storing the data, the web server will send back a JSON response containing that hash (which we call the FireLink) and the concatenation of the links. From then on, all users will be able to enter that FireLink and receive the original mapping of that FireLink in the MySQL database and open all the links attached to that FireLink in their current chrome window.
The chrome extension uses a small bit of local disk space to create a bookmarks options that allows you store nicknames for your favorite FireLinks and record them in the bookmarks table so that you don't have to worry about writing FireLinks down so that you wont't forget them!
Challenges we ran into
We ran into four major issues during the creation of our chrome extension. The first issue we ran into was an external server issue related to setting up the EC2 instance. The second issue was processing data from a dynamically created input field, with a dynamically created button. The third issue we ran into was creating the local storage within the chrome browser allowing us to save and retrieve bookmarks. The fourth and final issue we ran into was resolving the HTTP GET request which was not synchronous with the program.
Accomplishments that we're proud of
What we learned
Mainly, our group gained deeper insight into understanding how to communicate across applications over the internet. Additionally, we learned a great deal about front-end development.
What's next for FireLink
Moving forward, we would potentially like to push our extension onto the chrome store. But before committing to pushing out the product, we would like to spend some time reworking our design, primarily focusing on security and scalability. Additionally, we would like to revisit our UI and potentially look to new CSS extensions capable of giving us a more professional look and feel.