Inspiration

In the digital age, elementary and high school students are turning more and more frequently towards online services to self-medicate, rather than reaching out to services such as school counseling or personal therapy. After our own friends began confiding their depressive thoughts, our team saw the need for an intervening tool before they hurt themselves or others.

What it does

We created the Chrome extension Aegis to monitor students online searches and profiles to ensure their personal safety. Aegis implements the IBM Watson API tone analyzer to analyze linguistics and detect three categories of tones in written text: emotions, social tendencies, and writing style. Once red flags are detected, students are redirected to a resource page where they may receive the help they need. Unlike similar software on the market, our product is instantaneous - rather than searching a student's profile after the public or personal harm has been committed - it sends notifications right as the search is sent.

How we built it

We used vanilla JavaScript to develop the Chrome extension. This extension interfaced with a Ubuntu server we hosted through DigitalOcean, which connected directly to the IBM Watson Tone Analyzer API. The server was created using NodeJS, and the extension included several HTML files built with Materialize CSS.

Challenges we ran into

Given that none of us had much experience with backend server architecture and little experience building dynamic web apps, this project proved to be an extremely difficult endeavor with many trials and tribulations along the way. The biggest problem we faced initially was developing the core structure needed to get the system up and running, as we had to not only develop code for our Chrome extension, but for our server as well. This involved a multitude of Google searches, StackOverflow questions, and doubts about personal career choices.

Bug checking was particularly awful– as we were building backend and frontend simultaneously, whenever we encountered an error we had to restart not only Chrome, but the server as well. Error messages were thrown everywhere– sometimes in the Chrome Developer Console, other times in the OSX Terminal output, and later from the VNC connection that interfaced with our remote server. One particular bug that stumped us repeatedly was interfacing between client side and server side– we noticed that our HTTP GET requests did not return any responses, despite being successfully processed by the server. The biggest problem that hampered our attempts at solving this bug came from our lack of experience with Node. After spending three hours debugging this single issue (two hours with the guys at Make School– thanks so much for your help you guys were awesome!!!) we finally found the issue stemmed from a lack of permissions given in the “manifest.json” file for our Chrome extension.

Despite these challenges, we were able to build a successful prototype of our product! Not everything went the way we desired for sure (for one, none of us had anticipated being forced to build our own node server for our chrome extension), but it all turned out quite nicely in the end.

Accomplishments that we're proud of

Coming out of this hackathon, we’re much more proficient at using NodeJS and Javascript in general to build applications! Kinda like being stuck with a weird roommate for the better part of a year, being confined in tight quarters with NodeJS and cryptic server messages forced us to develop an extremely close familiarity with the software that tutorials and youtube videos can’t quite achieve. Speaking purely for myself at this point (Daniel), after dealing with the chaos that was Node for the past 24 hours, I now feel empowered to tackle anything that’s coming my way, including the new CS70 homework that was just posted two days ago...

What we learned

It’s been reiterated in the previous sections, but we learned a lot of NodeJS and web development debugging throughout this hackathon.

What's next for Aegis

We hope to be able to interface with the server better and to be able to encrypt the search queries of our users to mitigate privacy concerns.

Share this project:

Updates