Project showcase
Corona Guard

Corona Guard

Corona Guard is a smart contact tracing app that aims to slow the spread of COVID-19 by logging interactions between humans in a secure way.

  • 5 respects

Components and supplies

Necessary tools and machines

Apps and online services

About this project

Check out our 3-minute video introduction to our product!


Since December 2019, the Coronavirus pandemic labeled Covid-19 by the World Health Organization has spread to over 188 United Nations member countries infecting over 4.9 million people while causing over 300, 000 deaths around the globe. Coronavirus’s high RO value of 2.5 combined with its long incubation period of up to 14 days means that the only way to control the spread of Covid-19 is to social distance. This has caused the majority of public spaces to close wreaking havoc on the global economy. To reopen the majority of the global economy safely, robust testing and tracing infrastructure is needed to prevent a new spike in Covid-19 cases and deaths.

Most countries around the world lack robust infrastructure for tracking the spread of Covid-19 letting it spread very quickly causing unexpected spikes in cases all over the world. Contact tracing is a method of tracking personal interactions in order to preemptively warn a person before they spread Covid-19 to others who they will come into contact with in the future. By tracking personal interactions before Covid-19 actually spreads, many of the risks of being in public are reduced while healthcare providers can take a proactive approach when treating suspected cases of Covid-19 potentially saving thousands of lives. All primary, secondary, and tertiary interactions are logged which allows people to get notified even if they are at low risk of contracting Covid-19. Contact tracing also allows health care professionals to allocate limited resources like medications and vaccines to people who need them most by finding people who are at the highest risk for contracting Covid-19.

What it does

Corona Guard is a secure contact tracing app that utilizes peer-to-peer Bluetooth communication to anonymously track the spread of COVID-19. It notifies users of daily interaction with other users of the application, gives updates regarding the number of direct, indirect, and distant interactions with people testing positive for COVID-19, and calculates the risk of having the virus. Corona Guard also features an NFC chip that users must check into before going into public spaces to ensure that the public spaces are within healthy capacity levels. Owners of these public spaces also have the option of barring people from entering their property if they have a high-risk user. The app has a resources page to give the most up-to-date and accurate news and recommendations during the pandemic to prevent misinformation. All in all, Corona Guard aims to curb the spread of COVID-19 at its sources through its anonymous contact tracing and NFC system so that communities collectively can tackle the pandemic once and for all.

How we built it

The main mobile application for Corona Guard was made using Google’s Flutter SDK. Flutter is a mobile SDK that is compatible with Android Studio and Xcode letting mobile applications be compatible with both android and ios devices of any shape, size, and operating system version. Flutter enables Corona Guard to run on any modern smartphone with proper scaling and a responsive UI. Using the Flutter SDK, our team developed a responsive UI that enables users to get real-time data about their risk of infection while receiving notifications if they have been in contact with someone who has tested positive for Covid-19. The app also provides links where users can get up-to-date information about Covid-19 spread and procedures in their respective areas. The user interface of our app was designed with the intention of giving users easy to access information while being as transparent as possible about how a user’s data is stored and used.

if (typeof(lightBoxImages) == 'undefined') { lightBoxImages = {}; } lightBoxImages['a1978e3d09'] = [{ URL: '', caption: 'All four screens of our app with clean UI/UX design for a smooth user experience', type: 'image' }];

The database used was Google Firebase. There were two main tables, one for users and one for the entire system. The user side had these fields: “UUIDs heard”, a boolean “infected” value, and a calculated “risk” percentage. Every user updates the UUIDs they heard to the system, and this is stored in the “events” table. This table has 3 fields as well: “UUID”, a “time” value, and the user who uploaded this value. Together, these two data tables work to send data to the Flutter frontend. Firebase gives our app the ability to adapt to a changing user base being fast and responsive with one or one billion users.

if (typeof(lightBoxImages) == 'undefined') { lightBoxImages = {}; } lightBoxImages['e6dedc96cd'] = [{ URL: '', caption: 'Our backend architecture', type: 'image' }];
if (typeof(lightBoxImages) == 'undefined') { lightBoxImages = {}; } lightBoxImages['38ac03d2cd'] = [{ URL: '', caption: 'Backend database structure (ORM) to detect when a person has had direct or indirect contacts.', type: 'image' }];

The backend was built using Golang, and the Bluetooth was powered using FlutterBlue. The code can be viewed in our Github repository, but it's primarily responsible for checking how many direct, indirect, and distant people you have been in contact with. It uses these integers to calculate the risk factor, as described in the backend image.

The NFC scanner we built utilizes the MIFARE NFC standard which can transmit over 1KB of data wirelessly in under a second. The scanner reads the data in blocks which each hold 16 bytes of data. There are 64 blocks meaning the scanner reads 1024 bytes of data in total. The NFC tag in the phone stores whether a person has been exposed or infected with Covid-19 in the first byte in the first block as either a 0 or a 1; 0 for negative and 1 for positive. We stored this data in the first block so that in the event the scanner gets a partial read the scanner will still be able to display a positive or negative result. Lastly, if the rest of the bytes in the block are not clear (set to 0) the scanner will read the phone’s NFC chip as invalid as the person who is scanning the phone is likely using an unsupported app. As no data is needed by the Arduino microcontroller, our NFC scanner can run without an internet connection making it even easier to use for businesses of all sizes. The only potential maintenance business would have to perform are firmware updates every few months as we continue to optimize the scanner to become faster and faster.

if (typeof(lightBoxImages) == 'undefined') { lightBoxImages = {}; } lightBoxImages['7ba4dc22d9'] = [{ URL: '', caption: 'NFC scanner utilizing an Arduino Mega 2560 and RC522 to scan mobile phones into public places', type: 'image' }];

Industrial Scanner Design
if (typeof(lightBoxImages) == 'undefined') { lightBoxImages = {}; } lightBoxImages['a869086343'] = [{ URL: '', caption: 'Front View', type: 'image' },{ URL: '', caption: 'Isometric view', type: 'image' },{ URL: '', caption: 'Side View', type: 'image' },{ URL: '', caption: 'User Interface Panel', type: 'image' }];

As part of our NFC scanner, we also prototyped a sleek and industrial scanner enclosure for use in public spaces to accompany the NFC scanner and user interface. The scanner enclosure is made out of aerospace-grade aluminum and features a stylish industrial design. The user interface includes an NFC reader/writer and a large, high resolution 12" LED display.

Challenges we ran into

Some challenges we ran into while building Corona Guard were how to make it as private as possible. We initially thought of the idea to use geolocation or GPS, but many are hesitant towards giving their every location to a private company. Thus, we decided to transmit anonymous UUIDs (Unique User ID) between users in order to track which phones had contact with each other. These UUIDs are not connected to any private data such as someone's name, so we decided that this was a secure enough way for everyone to remain completely anonymous while still being able to accurately track contacts.

Accomplishments that we're proud of

The application is fully functional and is compatible with iOS 8 or newer and Android Jelly Bean, v16, 4.1.x, or newer. Furthermore, our proprietary NFC reader firmware can read user's devices in less than a second and can even work with a partial or broken read.

What we learned

We learned the fundamentals of app development and how to build a working application from the ground up. We learned how to use the Flutter SDK for the front-end UI/UX and Google Firebase for the database.

What's next for Corona Guard

We are hopeful that this application can provide communities a tool to collectively combat the spread of COVID-19 through its accessibility and ease-of-use. Through connections with health organizations, we can provide COVID-19 testing centers with information on who to prioritize testing and give health officials valuable information to help stop the spread of the pandemic. In the future, we hope to continue expanding our knowledge of algorithms and data science techniques to make the backend of the app more efficient and scalable.


Corona Guard Github Repository
To run on a computer, please download Flutter/Dart SDK and Android Studio. Then, launch emulator (best if using Pixel 3 XL 28 API) Thanks!

Custom parts and enclosures

Corona Guard Scanner Assembly
Requires the following parts:
Corona Guard Base.ipt
Corona Guard Stand.ipt
Corona Guard UI Panel.ipt
Corona Guard Base
Corona Guard Stand
Corona Guard UI Panel


Corona Guard Fritzing File
This is a diagram of how our NFC Scanner is wired to our Arduino
Corona Guard Wiring Diagram
This is an image of our final wiring schematics for our NFC Scanner and Arduino
Final 6opllbxegv


Similar projects you might like

Covid Travel Pack

Project showcase by Andre S. Manurung and Feroz Fernando

  • 5 respects

Arduino/Genuino 101: Build an Activity Recognition Device

Project tutorial by 3 developers

  • 12 respects

Corona Hand Wash Timer

Project tutorial by Random Stuff We Make!

  • 77 respects

Mind Poetry

Project showcase by Roni Bandini

  • 1 comment
  • 26 respects

Smart Pill Dispenser

Project tutorial by Team MakersUPV

  • 51 respects

IoTrix (Smart Advertisement LED Board)

Project tutorial by Ravi Parmar

  • 26 respects
Add projectSign up / Login