Katelyn has always been used to volunteering in her community and outside in other parts of the world. However she is immuno-suppressed and cannot leave her apartment in NYC, right now the center of the COVID-19 pandemic in the USA. She was looking for ways to volunteer from home and found a group called Sunnyside Woodside Mutual Aid, a group set up in her local Queens neighborhood. She quickly signed up to become a dispatcher connecting in need community members with able bodied volunteers. Every shift she had she was continuously asked the same question, "Is there a map somewhere of what's open in NYC still?" The short answer is yes, but its neighborhood oriented which means each has smaller audiences. There's nothing out there right now that covers the entire city, catering to that larger audience.
Enter in NYC CovAid
Joseph and Katelyn decided to build a map based app that would show all the legally operating businesses in the end user's community. The idea of the app is for the end user to put in their zip code alone with the category of aid they are seeking and a map will populate in their area with all nearby open businesses fitting the aid they need. We have 30 categories of types of Services Offered with 18,042 records of open businesses that we were mostly able to source from Open Source NYC but the specific datasets we used can be found here: Legally Operating Businesses NYC Pharmacies Hospitals Urgent Care Prepared Meals SafeGraph Grocery Store Data
How I built it
We chose to build our app using React. We started with the Create React App program from the Facebook team. We then wrote the code to change the massive CSV file with the 18,042 records into JSON format so that it could be parsed by the app later on. We then added a list view of all the businesses we had gathered and added a filtering capability. Next we started on the map view sourced from Google Maps and worked on plotting the individual records on the map using different colors for the 30 different types of services we were able to find. We changed the filtering capabilities to include the categories of aid/services we have records to. Next we had to hit the GeoCode API in order to turn zip codes into lat long coordinates. Now all the end user has to do is enter their zip code and our program will iterate through our location data making both a listview and mapview of all available records within a half mile radius. The list view is exportable with all information including location, phone number or website, and hours of operation.
Challenges I ran into
One of the biggest challenges we ran into was sourcing the data. It's incredibly difficult to take a bunch of resources a ton of individual contributors have put together and make a database out of it. The sheer amount of data we were working with was massive for a 36 hour project and a lot of it was entered in manually. It's also hard to use opensource data because it's not exactly tailored to what you are working on. However we were able to discover a few really great datasets that gave us the results we have. Once the data was entered into the app it started crashing every few seconds trying to load all the records. We were able to solve this problem by adding pagination to our app so that only a certain amount of records are loaded per page. This solved our main issue of the app crashing. Another issue we ran into when we first attempted a dynamic way to hit the geocoding API to decode the zip codes, but that ended up being inefficient and difficult to stand up so we hardcoded the lat long coordinates for those zip codes, limited the dataset to those zip codes, so now we're doing a simple dictionary lookup to get the positions of a service for a given zip code.
Accomplishments that I'm proud of
We are really proud of how the app works. It does it job which was the main goal of this hackathon for us. The other thing we are really proud of is our logos. It's simple yet gives you a good idea of what the app does.
What's next for NYC CovAid
If given more time we would work on the look and feel of the app and of course the performance of the app. Being that we are iterating through 18k records it would be nice to have this as a hosted database of some sort so that we could work on and control performance. We also would like to work on sourcing more data. We know there are pantries or food banks we might have missed. We want this list to get as big as it can for the sake of NYCers in need during this pandemic.
Using the App for Demo Purposes
Yet another issue we had was the issue of time. If given the right amount of time we would have been able to get all zip codes programmed in but for demo purposes we only have 3 available for testing. We got the app working for this subset of zip codes for proof of concept but plan to add all zip codes to support all 18k records as a next step. Right now its programmed to look up the zip codes 10016, 11209, and 11377. The data on the map appears as a heat map showing over which location the most resources are available. On the right is still a list view of all businesses that fit into your category of choosing within a half mile of those 3 zip codes with relevant information on each.