Data isn't cheap and phone plans are only getting more expensive. At the same time, our generation is drifting away from texting & SMS while becoming increasingly reliant on social media and other forms of online communication. Let's face it: we've all faced situations where we've been stranded for hours at a time without WiFi or data, while our friends are sending us important and/or entertaining messages that we unfortunately can't see in time. No more - we set out to build a product to eliminate any inequalities to access of WiFi/Data and to keep everyone connected, regardless if they're online or not.
What it does
Relay enables you to send and receive messages and notifications from social media platforms like Facebook Messenger and Twitter, all without having an internet connection! Once you connect your accounts through our secure web app portal, Relay will forward all messages you receive to your phone via text. You can then seamlessly continue the conversation by simply sending an intuitively structured SMS message to Relay, allowing for seamless communication without data or WiFi.
Here are the commands that Relay currently supports:
- Facebook Messenger notifications
- Sending a message to anyone on Messenger
- Twitter notifications for DMs
- Sending a message to anyone on Twitter
- Ability to post a tweet on Twitter
How we built it
The front-end of our app is built in React, which takes user data and pushes it to a MongoDB database. We created multiple API endpoints using Flask, each of which, interface with the Twilio REST API to send and receive text messages. After processing the data on our python backend, we send messages through Messenger and Twitter APIs to the user.
The server is deployed on a DigitalOcean droplet using nginx as a reverse proxy and gunicorn as an HTTP server. We had to get creative with multithreading in order to support multiple users at once!
Challenges we ran into
This was the first project using React for a few members of our team, which was definitely a stimulating challenge to tackle. While the Twitter and Messenger APIs worked flawlessly individually, combining everything into one flask app was a tedious process that took us all night. We also ran into a few issues since parts of the Twitter API we were using were deprecated recently, so we were inspired to pursue some creative workarounds.
Deploying the app also proved to be a challenge, since it was our first times deploying on a virtual private server. We had to learn a lot about virtual environments, routing, networking, and Linux to deploy our app successfully.
Oh and merge conflicts... so many merge conflicts... :(
Accomplishments that we're proud of
We are most proud of how each and every one of us learned a new technology/language through the creation of this fully operational project. We are also proud that we made what we consider to be a genuinely useful application to make people's lives more convenient and to help them save money.
It was also a few of ours' first times staying up straight for 24+ hours - but we have no regrets :D
What we learned
We learned about new technologies like React and MongoDB as well as how to use APIs from Twitter and Facebook. This project also improved our remote collaboration skills - after conquering merge conflicts and finding ways to communicate effectively via discord/screen sharing we have definitely learned more about collaborating without needing to be in physical proximity.
What's next for Relay
The current stage of our project is more of a proof-of-concept than an actual working product, but we're really proud of what we've built in 24 hours. In the future, we hope to expand to more platforms and to provide more detailed support for each of our integrations.