Inspiration

You’ve probably heard of the 911 fake pizza order call somewhere on the news. In this incident, a woman was witnessing domestic violence and couldn’t risk letting the aggressor hear who she was talking to. Therefore, through placing a fake pizza order to 911, she discreetly disclosed her situation and address to law enforcement. Because of this, the police were quickly able to intervene, keeping the woman safe from harm.

We were heavily inspired by this story and how subtle cues can indicate a call for help. However, using similar tactics such as making a fake pizza order will not work in all contexts. Therefore, we thought we could extend this concept to social media since in many situations, it is very natural for someone to start scrolling through their social media apps. Through our app, we want to empower people to call for help, protecting them from uncomfortable situations, abusive relationships, and life endangerment.

What it does

Instalert enables individuals under duress to discreetly notify trusted contacts of their situation, under the guise of interacting with a popular social media application. Specifically, it is intended for individuals who would not be able to reach out for help through normal means, such as a text or phone call, for fear of alerting their aggressor.

The primary view of the application resembles a social media feed, with dynamically-generated fake posts to populate the feed. Each post in the feed corresponds to a trusted contact, with the username being configured by the user to match a particular trusted contact. For a given post, there are three interactive buttons: the like button, the share button, and the bookmark button. These three buttons send an SMS message to the trusted contact that convey a low-severity, medium-severity, and high-severity situation, respectively. This SMS message also contains the user’s current geolocation, in the form of a Google Maps URL.

In addition, there is a settings view, where the user can add trusted contact information, which includes name, phone number, and the username that shows up in that contact’s post.

Finally, when the trusted contact receives the SMS message, they can acknowledge receipt by replying with “OK”, which will push a notification to the user’s device indicating that the contact’s username has “made a new post”.

How we built it

On the backend, we use the SparkJava web application framework. Primarily, the backend is responsible for processing payloads from the frontend, which contain the message severity level, trusted contact phone number and name, and geolocation. Once the message string has been constructed from the payload, we use the Twilio API to send an SMS message to the trusted contact. In addition, there is an API endpoint on the backend that serves as the Twilio response webhook. This endpoint accepts the “OK” message from the trusted contact. Once the “OK” message has been received, we push the notification to the user’s device via a WebSocket channel, which is opened when the user first visits the site.

Instalert’s frontend is built in Javascript with React and managed by Node.js/npm. In addition to the material-ui framework, we also used react-router to route between our settings and main page. We also used Firebase to store trusted contact info, and the browser built-in Geolocation API to embed the user’s location into the emergency texts.

Other technologies we used are Gradle for our backend build tool, Heroku for deployment, and GitHub Actions for CI/CD.

Challenges we ran into

  • Coming up with an idea
  • Sleep deprivation
  • Pushing notifications on a backend-initiated basis (WebSockets)

Accomplishments that we're proud of

  • We were able to get it working
  • It looks nice

What we learned

  • Twilio API

What's next for Instalert

  • Multi-user support with account management/credentials
  • Further UI customization
  • Text-to-911
Share this project:

Updates