Inspiration
How can neighbors interact without directly interfacing together? Streetpush seeks to answer this question in the simplest, user-friendly way possible.
Like a terminal, the first page of the web app is surrounded by tiny buttons and pleasing modals. Search is enabled by third-party geocoding APIs and group-chats are enabled by RabbitMQ and geofenced APIs provided by Mapbox, Turf.js, Radar.io and HERE.
What it does
Streetpush provides a real-time way for you to access on-going events related to the Coronavirus in your own backyard. Localized content, alerts and updates make up the majority of the map where you can explore geofenced areas or 'bubbles' that show ranges of severity and outbreaks in a city. The flagship city for this software is 'New York City' where another outbreak is currently rising.
Users, aptly called 'Civilians' also have the ability to communicate with each other via messages powered by WebSockets and AMQP protocols. They can chat, share alerts or create user-generated geofenced 'bubbles' that alert other users to closed stores, dangerous zones and long waits at local supermarkets/retail brick and mortar stores.
Streetpush is truly an ingenious MVP to the next Citizen or Neighbors by Ring App of it's time.
How I built it
I used Python for the backend and React.js for the frontend. I wanted to make an Android application but realized it would take longer time than just spinning up a react.js boilerplate and going from there. Webpack, Babel, Mapbox GL, Turf.js and other components were used for the react web app.
For the API, which was built with Python, I incorporated AMQP libraries for RabbitMQ, Websockets and Celery to enable the real-time updates/notifications/alerts and chat aspect of the application. I also incorporated free COVID19 APIs sourced from Postman's collection of COVID-19 APIs for the coronavirus aspect of the application.
I hosted the web application on Vercel and dockerized the API for a container instance on one of my private VPSes, connecting the two via a npm module for http networking called Axios as most know.
What I learned
There is so much potential for an application of this kind. Options like Citizen App and Neighbors by Ring App exist, but there is no central authority for real-time communication/alerts for COVID-19 that would help people ease anxiety during shutdowns and lock-ins. Because it would take a team to work on something of that magnitude, I encourage whomever is reading this to go out and assemble/forage something in the fire from the scraps of this MVP.
It is highly necessary during these times and would be great to see implemented with fully packed features like marked zones (a la Turf's ability with GeoJSON), a lovely user experience/interface and artificial intelligence for certain key features.
What's next for Streetpush
The first iteration of this application is a react.js/python client-server version, because it was the easiest way to implement the ideas I had for Streetpush.
In the future, I see Streetpush as being a mobile application available to all civilians in different areas, the flagship zone being New York City, that allows them to keep up with shutdowns and still interact with their neighbors, similar to Citizen App or Neighbors by Ring App available on the App and Play Store.
Log in or sign up for Devpost to join the conversation.