Inspiration

Over the course of 7 years, the rate of homeless people has increased over 40% and just in 2018, Los Angeles Homeless Services Authority’s Homeless Count reports that over 65% of homeless adults have lived in Los Angeles County over 20 years. This count reports over 52,000 individuals and family members experiencing homelessness in LA County. With homelessness being a large issue in LA, we decided to create a hack that would help address a small part of it.

Despite being homeless, however, a large portion of this community still have or have access to a smartphone that will allow them to interact with our hack. In LA, a study found that over 58% of homeless people currently own a smartphone and over 51% can access the Internet on their device. These numbers put an estimate that our hack can help over 26,000 homeless people in LA.

What it does

Our web-app connects homeless people with food, hygiene, and shelter resources that they may not have access to. By texting a number available on our website, they are prompted with a series of messages. These messages will ask them for the service that they are in need of and for their location. We then use this information to find the 3 nearest organizations (in our database) that provide the service they desire and send them markers on Google Maps that will allow them to get to said locations. Organizations that would like to assist in our effort can also add themselves to our database by accessing the add organizations tab on our website. They are then asked to provide basic information such as their phone number and address.

How we built it

Frontend

Auxilium’s frontend was implemented using vanilla HTML, CSS, and Javascript. Since the core functionality of our web-app lied in the texting feature, we did not deem it necessary to use a modern frontend stack. We also opted to use jQuery and Bootstrap as this allowed us to speed up the development of our website.

Backend

Auxilium’s backend was programmed in Python and makes use of the Twilio API to simultaneously send messages to users as well as update user sessions in our database depending on the user’s response. Our web-app also relies on the Google Maps API to dynamically grab and send the closest known homeless aids (limited to our database) to the user.

Challenges we ran into

The biggest challenge we faced developing auxilium was that we could not test most of our Twilio functions until the very end as they required the application to be deployed on a public server. We found a workaround by hosting it via ngrok so that we had a server to test Twilio. However, we also ran into issues when hosting our web application on ngrok because we had to find the correct way to route the number and receive the URL’s specific to the client. This was eventually fixed through Python’s Flask library and through setting states specific to who was texting the number. On the frontend, we also faced challenges in formatting it to match our initial wireframes. Thus, we ended up sacrificing a little bit of the responsiveness of our website for a more appealing design. The shody internet was also a big challenge to deal with as most of our testing required a stable internet connection. We found a workaround for this by testing at night when it was much more stable.

Accomplishments that we're proud of

For the backend side, we are proud of how we were able to track a single user through states and rework Twilio’s API to pertain solely to that user, especially when we found a way to locate the user using their IP address since that was one of our biggest challenges. This was done by learning how to read and write to a JSON file as our database. Specifically for Twilio, we are excited that we got our Twilio number to work properly when routing to our web application.

For the frontend side, we are proud of how fast we were able to crank out a design in Sketch and implement it. We are also proud of the fact that we were able to properly link the frontend to the backend code through HTTP requests as sending data in Javascript and handling it in Python was not something we were familiar with.

And in general, we are proud of the fact that we were able to finish a project that we pivoted to after working on a different idea for 12 hours.

What we learned

For the majority of our group members, this was the first time using Python as the backend for a web application rather than Node.js. We have never used Flask before and learned how to host the application with ngrok. Additionally, we learned how the Twilio and Google Maps Distance Matrix APIs work as those APIs were essential to our application. We also found a way how to reroute a client to receive their location via IP address, rather than permissions on their phone as the client would only interact via the messaging app and browser on their smartphone. For other members, this was the first time we’ve ever interacted with Javascript on a project-level scale. We saw how to create a clean web application and the workings of design for a better UI and UX. We also learned (and reviewed) the fundamentals of HTML and CSS and focused on Bootstrap as it was the easiest way to create a partially-responsive web-app. Finally, we learned how to work with HTTP requests as we had only learned about them in theory up until this point.

What's next for auxilium

During the development of this system, we found that there were definitely areas to be improved upon. Auxilium could benefit greatly from improving its database as a larger database would be able to provide homeless users with more options that are closer. Another aspect that could be improved upon is auxilium’s searching algorithm. Currently, the searching algorithm can be somewhat slow because our application depends on the google maps API to work with our database. In the next iteration, we would be able to improve how our system selects which organizations to test with the maps API in order to improve on the speed of our system. We are also looking into caching past results in case they are relevant to other people. Additionally, we would like to implement a voice or video call option for the users to make it friendlier to those who may have disabilities that would hinder the texting feature useless.

Share this project:
×

Updates