Inspiration
Did you know that in the past 24 hours, a missile hit the World Central Kitchen partner restaurant in Kharkiv, wounding numerous people? Not even 2 hours earlier, Russia's defense ministry downed Ukrainian military transport aircraft. Major occursions are always happening. We wanted to help the people of Ukraine to avoid these easily hit and dangerous areas. We also wanted to find a way for people to stay up to date on current events that aren't selected on whether they're "big enough". That is why we created URHELP, a safety app for Ukraine. URHELP will send you LIVE, real, raw crises and issues happening in Ukraine all through a short and simple text message.
What it does
Since our phones have become glued to our hands and we check our devices every time it buzzes, we decided to create a program where people can enter their phone numbers to our safe and secure website to receive LIVE text messages on events, issues, and crises happening in Ukraine. Our website also includes numerous links to charities to help 3hurting families.
How we built it
In order to build our application, we used Angular for the front end, which communicated with a Flask and Python Backend to send and retrieve information from a database stored in the cloud by our web server hosts, Repl.it. Additionally, we automated a script to run every minute that scrapes https://liveuamap.com/ for specific news information pertaining to attacks in specific areas in Ukraine. In order to automate this, we set it up as a Discord Bot, and used repetitive tasks to keep the web scraping script constantly running. Additionally, in order to stop Repl.it from shutting down our script, we connected the script to a web server, run by Flask, which was constantly receiving requests from different 'up-time' sites to keep the server active enough so that Repl.it does not automatically shut it down. This way, we forego the struggle of working with an external database, avoid paying fees for cloud hosting, and avoid having to use cron-jobs or other scheduling tools to create a script that runs every minute!
Challenges we ran into
We ran into multiple amounts of challenges that took numerous tries to fix. Here are some of the challenges we faced:
The angular components were not showing up on the flask server. We fixed this by changing it to a static Href.
Each time we needed to compile code, we would have to build the js files again and copy them. We fixed this by making the terminals for these specific purposes and using cp commands.
We weren't able to make routine modules correctly because the default was routed to "static" and navigating anywhere else would cause the contents of angular to disappear. So, we made it a single page.
Accomplishments that we're proud of
We are very proud of our ability to properly create the front end and integrate it into the backend, but our main accomplishments creating and maintaining distributed databases over cloud services, avoiding costs of hosting and utilizing databases, and being able to continually host our webservers!
What we learned
None of us have ever built a full-stack web application of any kind. Animesh and Ajay are both usually front-end only developers and have had little no experience using Flask as a Web Server, nor interacting with the server to send and receive information. Through this whole process, we all learned a lot about HTTP Requests, web servers, how the backend communicates with the front end, and much much more.
What's next for URHELP
Global expansion! In the future, we plan to expand our current technology across the globe to further educate individuals on international crises and news. Some goals we have are being able to personalize text messages about different topics from different places, all around the world. Then we plan on adding an interactive map to our site, allowing our viewers to quickly find the stories most relevant to them.
Built With
- angular.js
- beautiful-soup
- cron-job
- discord.py
- flask
- freshping
- python
- repl.it
- twilio
- typescript
- uptime-robot
Log in or sign up for Devpost to join the conversation.