We are in the midst of the novel coronavirus (COVID-19) pandemic. As a result, many around the world have been mandated to shelter in place, self-isolate, and practice social distancing due to not wanting to potentially infect others in their communities and further spread the virus. While this is the right thing to do in order to "flatten the curve", this has the almost palpable effect of leaving many of us suffering from loneliness and with a longing to connect with others. We understand how this is a difficult time for many throughout the world, and we wanted to do our part in helping bolster the general public's morale. Inspired by how Pokémon GO was able to build a vibrant community and provide excitement in many's lives, we sought out to replicate that level of social impact by providing some light in these dark times and to inspire the world to practice social distancing so that we, as a global community, can recover as quickly as possible from COVID-19.
What it does
Our team created a mobile application (iOS) called Panda GO (inspired by Pokémon GO). This app gamifies the shelter-in-place/quarantine/self-isolation experience in a manner similar to Pokémon GO.
This mobile application strives to do two main things:
- build an online community to help with social isolation during these tough times
- promote social distancing to stop the spread of the coronavirus
Each user has a virtual panda that represents their health (or degree of social-distancing compliance). Each panda starts off in a healthy state. Users of Panda GO are able to "fight" other user' pandas that they see on their community map, and as users win their pandas grow stronger (similar to how users in Pokémon GO can level-up). When users grow to become amongst the strongest pandas in their communities, they can then battle leaders of other communities. Users can continue to fight their way to the top by out-competing other city/state/country/world leaders. This is the social aspect of the game.
The app also helps promote social distancing with the help of SMS. Each user has a home base (latitude, longitude) that they set, and the application tracks a user's location using GPS. When a user goes outside a predefined radius of their home base, they will get an SMS as a reminder that they are about to leave their home base and are putting themselves (and their community) at risk. When a user returns back to their home, they will get another SMS reminding them that they are about to enter their home and need to wash their hands for at least 20 seconds. The SMS will also contain reminders about best practices (coughing into their elbow, not touching their face, keeping a minimum of 6 ft from others, etc.) to keep them, their loved ones, and their communities safe.
Good social distancing practices, such as staying at home as much as possible and minimizing trips outside for essentials like groceries, result in increases in a users' panda's health. Poor social distancing practices, such as going out to meet up with friends, will result in harsh negative penalties to a panda's health. All of this is done to paint social distancing in a more positive light, and the goal is for app to incentivize the general population to make better decisions with regards to preventing the spread of the virus and making the shelter-in-place experience more bearable (maybe even enjoyable)!
Note: Our app is called "Panda GO" because who doesn't love pandas? As a result, each user's character is a panda!
How we built it
A user first registers for our application and authenticates themselves over SMS using Twilio's authentication API. We used Twilio's API to send a SMS notification to the user that they are putting themselves, their loved ones, and the community at a higher risk for spreading the virus when they are about to head outside. We used Apple's Core Location API to access a user's location to detect when they leave their home base and when they return to their home base after going outside.
On the back-end, we used Node.js and Express.js to build out an API for our front-end to call. Functionalities provided include CRUD operations on each user's panda's health status, what weapon(s) they have to fight other users (users can buy and upgrade their panda's weapon(s) to help battle other pandas out in the wild), etc. that are stored on MongoDB Atlas.
Challenges we ran into
We were in a battle against the clock. We didn't have enough time to incorporate a COVID-19 API to get coronavirus-related statistics that we wanted to use to determine the level of health risk a user is taking based on their location.
Accomplishments that we're proud of
We are proud of creating a working prototype of an application that we really believe has the potential to make a difference in the world during these tough times. We are also proud of putting together a design that we are excited to showcase to the world. Another fact we're proud of is that we have an international team (we have team members from both the US and South Korea). Yay for international collaboration!
What we learned
This was our first time using a NoSQL database. We decided to store user and weapon data in documents in MongoDB, and we thoroughly enjoyed learning how to integrate MongoDB Atlas into our project! We will definitely consider using MongoDB more in our future projects. It was also some of our members' first time using Node.js and Express.js, so this was a great learning experience.
What's next for PandaGO
We want to build out an Android version of this application to reach a wider audience. We also want to add more rewards and incentives for people to practice healthy measures put out by the Centers for Disease Control and Prevention (CDC).