We are currently in the highly infectious Omicron wave of the COVID-19 pandemic. However, contact tracing (in our school community) is slow, with it taking weeks for vague and unclear exposure notifications to come out. Due to this lackluster communication, many of our classmates have been infected with the coronavirus and left uncertain about the proper actions to take. The place in the school where most people have got COVID in the school is most likely the cafeteria, so our project fills in that gap in the DOE's system. We aimed to create a universally accessible system for automated, rapid, and concise exposure notifications that could take effect before more people got infected.
What it does
Users log in on any web-connected device, such as their phones or laptops, to register seats in a common area, like a cafeteria. Our databases securely record the times and locations people visit the space, so that we can easily contact trace in the event of someone testing positive. Should that happen, our systems algorithmically determine close contacts and promptly email the users with an exposure notification and a link to the latest CDC guidance. This way, we can greatly constrain the window of time people may spread the virus without knowing it.
How we built it
From there, the data is served and received via an Express.js API.
For our frontend, we used the Svelte framework to design a platform-agnostic web interface, allowing users to access it whenever and wherever they may need it.
To programatically and dynamically deliver email notifications, we relied on Gmail's OAuth2 API accessed via the
For collaborative programming, we used Visual Studio's Live Share feature. Our deployments used Vercel, which interfaces with our GitHub repository. To coordinate our efforts, we used a combination of Discord and the GitHub Projects feature. Testing our API was done with the help of Insomnia, which generates cURL command line inputs for our requests.
Challenges we ran into
Svelte was unfamiliar to half of our team, so there was an initial learning curve when designing the frontend. The Live Share feature would sometimes desync with the server, leading us to mangle our code without realizing it. Initially, our email system did not use Gmail, and it would get flagged as spam by regular email providers.
Accomplishments that we're proud of
To dynamically render our location map, we made use of the Canvas browser API. Our close contact detection algorithms proved especially efficient despite having to sort through a substantial amount of data points.
What we learned
- the use of Svelte
- how to send emails via the Gmail API
- how to use the Canvas API in the browser to dynamically render images
What's next for Kinesis
Obtaining permission from our school administration or another public space venue to deploy our contact tracing system to an actual userbase. Securing funding and resources for continued maintenance and hosting of the service.