Skip to content

DageTeam/dage

Repository files navigation

Däge

Check out our 3 minutes video at https://vimeo.com/142972852

Every day, 112 billion corporate emails are sent. All it takes is 1 email to change the course of a company.

What if your Human Resource team can efficiently scan emails for harmful content? What if your Security team can easily tell if confidential emails are being sent to the wrong people? What if your Sales team can track the content of the best and worst performing emails?

This is where Däge steps in. Däge actively and silently monitors outbound emails from your server, utilizing machine learning to identify emails that is important to your team, and notifying you whenever it finds noteworthy emails. With the ability to scan thousands of emails every minute, Däge provides your company the tools to know the content of your employees’ emails, without you dedicating valuable resources or time.

Let's look at Däge's functionalities:

  1. Upon signin, the dashboard providing high-level insights into when flagged emails are sent, most flagged users, and detailed breakdowns of why emails were flagged. The attractive D3-sourced charts and tables provide an easy to understand overview of your company's digital health. Clicking on the dynamic 'New Flags' number dispatches an action to change the state tree to take you to the unread 'alerts' panel.

  2. The unread flagged emails panel allows you to receive new alerts on this screen. Every email has details on which keywords triggered the flag and the context the keyword exists in, allowing the admin or the lower level users to unflag emails to train DägeWatch.

  3. The all flagged emails panel archives all unflagged emails or those that have been read.

  4. DägeWatch flagged emails - see below.

  5. The customization panel allows the top level admin to manage custom filters and its related keywords. It features responsive adding and removing capabilities despite the need to query the database, thanks to the dynamic re-rendering capabilities based off the React state tree.

  6. The manage users panel allows admin users to manage lower-level users. Set permission groups broken down by department so teams only see relevant flagged emails.

All these features provides actionable intel to make it incredibily easy to secure your company's outbound email stream.

#Architecture#

alt text

Däge also features simple RESTful API calls from the front-end to back-end. However, it might be tedious/difficult to follow along the React/Redux structure if you have never had experiences with Redux way of creating new state trees through actions and reducers. We've provided several action/reducer map to elucidate how some of Däge's features are rendered.

*Note: a) rectangular boxes represent the constants and the actions. b) words superimposed on the arrows represent the state changes caused by the reducers. c) the diamonds represent the different states within the state tree.

Emails alt text

Filters alt text

Authentication alt text

Git Workflow Alt text

Database Schema Alt text

#HOW DOES OUR DÄGEWATCH ALGORITHM SIFT THRU ALL EMAILS? Let’s start with the fetching of the email. The mailListener.js, when ran, consistently listens for incoming emails sent to the provided email address setup. In our case, it is dageprotect@gmail.com. When the mailListener detects a new mail has been received, it will first sanitize the email subject and email body for apostrophes. A single apostrophe can break the SQL Statement, thus we need to escape it by appending another apostrophe to it. Then the insertEmail function will be called from the database.js file to insert the email into the database.

At this point, the program parses the email, which has been sent as an argument, into multiple columns, as defined in our schema. It will insert it into the emailTable, ready for the periodic Cron job to take further parse the email.

During our first pass, our flagging algorithm will check inside the emailTable for all ‘unchecked’ emails (emails which have not been checked by the flagging algorithm in flaggingAlgo.js). SQL will pass back an array of objects, each object being an individual email with additional metadata. The flagging algorithm will first check to see if it’s an empty array; if so, there’s nothing to do. Then it will loop thru the array of emails and mark the emails as checked in emailTable. 

After which it will get all the flagged words, defined in the keywordTable, and check to see if any flagged words are inside the email. If there are, the algorithm will then create a string that can inform the reader of the the context of the email.  Then it will insert the identifying information and context into the contextTable. The client facing dashboard will display the stored data: the flagged keyword, the context, the user who inserted the flagged keyword and also the user’s filter.

#TECHNOLOGIES USED:

  • React/Redux
  • Node
  • Express
  • SQLite
  • Gulp
  • Jasmine
  • Karma
  • Travis CI
  • Google Cloud SQL
  • Google Cloud BigTable
  • AWS Elastic Beanstalk

#Deployment#

Run BLANK. That's it!

#Testing#

Make sure the Express server is running, then navigate to BLANK and execute BLANK.

#Contributing#

Please see _CONTRIBUTING.md for contributing best practices. Aside from our extensive comments within the codebase, we've tried our best to create easy-to-understand self-documenting code. Please try to keep this up when you are contributing. Thanks!

#Authors# TEAM DÄGE:

  • GT Deng
  • Anthony Liu
  • Max Li
  • Andrew Nguyen
  • Tito Esteves

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published