ella's "bad" handwriting (aka brainstorming)
server1 saying hey
City to Coordinates (by hand!!)
Zip to City (also by hand!!)
server2 responding hey
app testing (aka feed me)
There is a huge refugee problem in third world countries, especially in North Africa. Many of these refugees have been streaming across the Mediterranean into Southern Europe. There are often people starving to death on the streets, next door to people who are both capable of and willing to help them. The large communication gap between the people who desperately need help and the people who are trying to reach them needs to be bridged - and this is where our technology comes in.
What it does
CentRefuge provides a scalable technical solution to the current refugee crisis. Our medium of choice is SMS messages, largely due to their affordability and reliability. We allow refugees or anyone in need of help to communicate their basic needs to a group of volunteers in the region. By simply texting a hotline number - +1-(256)-515-4199 - they can get help from people within their neighborhood or city within minutes.
We store and aggregate the data of the volunteers as well as the people in need of help to better understand and visualize the parts of Greece which are suffering the most. By pinpointing these areas, we hope to make it easier for authorities to respond promptly and effectively.
How we built it
Our project is threefold: a SMS system, an Android application, and a web application.
We used Twilio to forward SMS messages and communicate with a FireBase Database. Then, we used DigitalOcean Droplets (in a distributed manner, with 1 master and 3 slaves) to service to a large number of incoming requests at a time. Our servers ran a NodeJS backend to connect the messages to volunteer data and match people with those most likely and available to help them. We also built an Android app for volunteers to sign up to help people near them. Finally, we built a web app using HTML, CSS, and the Google Maps API to visualize and aggregate the data.
Challenges we ran into
Creating a distributed system in NodeJS was quite difficult - communicating between the master and slaves was quite tricky. Even after we established communication, it was still hard to find a good way to load balance quickly to distribute the load evenly between the slaves. It also wasn't trivial to find volunteers near the requests. We did this by parsing the requests for a zip code - however, a lot of the work translating the zip code into a city and then into latitude/longitude coordinates was done by hand.
Accomplishments that we're proud of
We addressed a really important problem and we overcame many technical challenges along the way. We worked together well as a team and parallelized a lot of the work, while still keeping in touch with what everyone was up to, with hourly scrums :) The entire time, we kept correctness and good-design as top priorities.
What we learned
Hackathons are fun :)
What's next for CentRefuge
We want to follow through with our project and we want to see our work have an impact in Greece. We also want to further scale our distributed system of servers to be able to handle the kind of volume that Europe is dealing with in terms of the refugee crisis.