Inspired by the contact tracing call center in Singapore, I believed that there should be a more effective way to trace contacts made with a positively-tested COVID-19 patient. In a video interview, they said that after a person has been tested positive, they would ask the patient where they have been and who they've met. The interview process would last as long as a day and then they would proceed to contact everyone whom they've mentioned. The problem is that the patients would often forget some of the information and the time spent on interviewing one patient is too long, risking the spread of the virus. Moreover, many people do not feel comfortable when the contact tracing app logs their location data or Bluetooth monitoring data. Therefore, I am inspired to create a solution that can tackle both challenges.

What it does

At first, my app uses Google authentication to provide a secure login. Since all UMD students (not sure for all USM students) have a Gmail account, school administrators can easily implement the system. Upon logging in, users would use my app to scan NFC chips that are spread around an area (since NFC chips are very accessible, a lot of them can be scattered around to have as many as one placed on each table). As the app scans for the unique serial number of an NFC chip, the app creates an encrypted key from the serial number for the user to input into the app. The scanned time would automatically be logged. The last thing the user would need to do is update the duration they have spent at each location. Each person can view their list of logs they have scanned on the dashboard and the duration they were there. Once a user is tested positive, admins can then update the logs created by that user in the database to flag them as “positive”. Other users can regularly check the “Tracing” page in order to see if they have come into contact with a positively-tested patient. I would like to note that the users are only able to see which of their logs have overlapped with the patients’ and they could not be able to see who the patient is in order to protect the patient’s privacy. A high number of overlaps would mean close contact. With that information, users can act accordingly, like getting a COVID-19 test or contact first responders for advice. Admins on the other hand could have precautionary measures by reverse-searching on the database to find potential spread and contact high-risk users.

How I built it

I used JavaScript and Nodejs as my backend. On top of that, I used express as my server framework for routing and serving handlebar rendered pages that would perform all sorts of GET, POST and PUT requests. I used materialize.js to make pages look good. I used passport.js to authenticate users because why build your own login when you can use Google’s as it is more secure and UMD students all have one. My NFC scanning feature uses Google’s Web NFC API to read NFC chips using chrome (in which implementation of this API is not widely used yet, because it is pretty new). My server would then take in these POST and PUT requests to update information in MongoDB's free database that I have set up. My server would take the database's information to check for any overlapped logs with a positively-tested user whenever the user requests for it.

Challenges I ran into

My inexperience in frontend limited my vision for the project but I overcame by using a server-side rendered "frontend". Working with an API that is still in its trial version posed many challenges, like its lack of adoption by anyone and Google, require the API to be accessed by a secured route (that's why I used my personal secured domain in order to be able to access the API)

Accomplishments that I'm proud of

Having a working prototype where logs could be successfully added to the database and server was able to retrieve data from a database. I was able to write a minimum viable algorithm to reverse search overlaps of logs. The challenge allowed me to work on a project that could potentially do social-good. Last but not least, I am proud that I was able to finish the project in less than two weeks.

What I learned

NFC data structures, the use of google authentication, server-side render of frontend, using a database, current contact tracing methods.

Built With

Share this project:


posted an update

Forgot to mention that my NFC Key Generator can be accessed via Since the Google Web NFC API is in origin trial, the API can only be used with URLs that have https or localhost. Therefore I had to use my own secure domain to access the API in order to be used in my prototype.

Log in or sign up for Devpost to join the conversation.