Inspiration

In a recent survey of our local city, Fremont, CA, the city outlined concerns for reduced response times for emergency services to arrive at locations. Due to budget cuts, however, Fremont was unable to take action to approach this problem. Having lived in Fremont for our whole lives, we knew our community would want to feel safe and secured, and to provide this sense of assurance, we developed Responder.

What it does

Our project, Responder, is the first emergency service response time visualizer and predictor! Specifically for senior citizens, our web application can predict emergency service response times for their specific address and their county in general, as well as showing directions to the closest emergency service facility in their city and county! The website shows interactive embedded Google Maps with hospitals and fire stations on it, allowing users to easily use it.

How we built it

We chose to create our web application using Flask, Python, HTML, CSS, and JavaScript. We used Python, its Flask library, and JavaScript for our backend code. To utilize datasets regarding city names, county names, county populations, county areas, and more, we used Python and the Pandas library. We used this data along with the Python Google Maps API (Google Geocoding API, Places API, Directions API, Maps Embed API, Service Usage API, Maps Javascript API) to create interactive Google Map maps that show the closest emergency facility locations and directions to them citywide and countywide. In order to further interact with Google Maps, we implemented basic web scraping with Python to read data from Google Maps requests. Lastly, for our backend, we utilized a Random Forest Regressor model to make predictions for a county’s response time given the number of emergency facilities, area, and population.

For our frontend, we used the latest versions of Flask and Jinja2 to run our HTML, CSS, and JavaScript code on our website. We hosted our site on Heroku, a Platform as a Service (PaaS), and connected it directly to our Github Repo. We set it up so that each time we pushed a commit, the app would update automatically. This made collaboration more efficient and we were able to integrate our various parts effectively. We also created code to embed Google Maps interactive maps into our website with HTML and JavaScript.

By using all of these skills and programming languages in tandem, we created an automated and cohesive web application that we believe will help seniors anywhere.

Challenges we ran into

In the front end, we encountered problems with the Google Maps API and hosting it onto the actual website itself. At many times, the map was unresponsive, and wherever it did show up, the location would be random places in other countries and sometimes in the middle of the ocean. We overcame these problems by debugging the code step by step. Eventually, we figured out that we have a problem with the iframe, so once we edited the tag, everything worked perfectly. In the backend, we had some difficulty with the google API and with machine learning. It wasn’t as accurate as we wanted it, so we had to edit our module type and increase the precision and variables in the project. Over time, after examining over 4 data sets with a culmination of tens of thousands of rows of data and personally researching data from across the country, we gradually developed our models that accurately predict the time and location of the given emergency service.

Another issue we had in relation to using the Google Maps API was the time it took for each request. Furthermore, in one part of our code, we had to make repeated requests in a loop, which caused Heroku to time out. To fix this, we considered what could be done; options included running fewer loops, which would make our application less accurate, or try out multithreading, which is what we chose. We checked that Heroku would support it, and made sure the number of threads we made would be less than Heroku’s maximum. After we implemented multithreading, the operations that previously timed out the site took less than 2 seconds.

Accomplishments that we're proud of

We are really proud of our applications of Google Cloud and the Google Maps API in our project. Having practically no experience interacting with APIs, let alone location services, being able to successfully utilize the Google Maps API in our project was something that we are really proud of in the backend.

In addition, we are also proud of the machine learning portion of our project. Though none of us are experts in machine learning and data processing, we were able to use data sets and train a model to make it accurate enough to predict a time within a minute.

What we learned

Jahsh - I learned a great deal about the interaction with various APIs and the backend, especially the specific Google Cloud and Google Maps APIs used in the project, as well as more about collaboration in Github.

Abhijith - I developed my HTML, CSS, and JavaScript skills to be more advanced than they were before, especially with different types of animations and elements in HTML. I was also exposed to how Flask connects Python to HTML, CSS, and JavaScript as well as how Heroku hosts websites online.

Anuj - I learned a lot about data manipulation with csv, xlsx, json, and many more types of files, especially with the python library Pandas. I also learned a ton about using APIs in Python and location services, such as the Google Maps API, as well as different hosting services, including Heroku.

Rachelle - I mostly developed skills in connecting the frontend and backend through the Flask framework. This included passing information back and forth between templates and the backend Python files, and I also used Ajax for the first time!

What's next for Responder

The next step would be to create a mobile app by integrating the backend with Flutter and Dart. By using this language, we can easily incorporate the Google Maps API with it as Flutter is developed by Google. This app will also work for both iOS and Android operating systems. To take our website to the next level, we’d like to deploy it online so that people can search for Responder and use it on their web browser. This would allow for more people to use it and for it to impact more seniors positively. In addition, to spread our web application, we aim to partner with local and national fire stations and hospitals to spread the word of Responder to the community. Lastly, to improve the accessibility of the website, we want to incorporate a speech-to-text feature where instead of manually inputting it, users can simply press a button and say their address.

Through these next steps for Responder, we hope to expand its usage across more and more people and make it even easier and more convenient to use.

What is the effect your project will have on students returning to in-person school?

For NightCode Hackathon Only This project will affect people in school by helping them take better care of their loved ones. When students, especially with older parents, are in college and elsewhere, family members may be left alone, and if an emergency occurs in which someone is hurt, our app helps them with how to treat themselves, in the case of minor injuries such as falls, and also provides them with information about their local emergency services. Overall, this project will have a significant positive effect on the community and it will allow technology to go hand-in-hand with keeping our families safe.

Built With

Share this project:

Updates