According to medical journal "The Lancet", many confirmed cases of Covid-19 are asymptomatic. The virus therefore spreads quickly across the world with the help of people who unwittingly spread the disease. In order to solve this problem, an effective solution must be discovered that can quarantine targeted cases before they can infect others around them.
Solving the problem
The solution for this is based on the architecture of TraceTogether (first large scale deployment of a contact tracing app in Singapore), but uses more means of communication (Bluetooth, BluetoothLE, Wi-Fi, ultrasonic modem) to detect proximity to another person. Contact tracing is an established form of finding and isolating confirmed and potential cases of the virus. It can be made scalable because data can be communicated over multiple channels of communication in case one channel is not available. Furthermore the solution can be embedded in existing apps as an opt-in library to scale the adoption. Lastly, in 2 months time an initiative can be started to create a publicly available key/value database with anonymized keys that would allow all contact tracing apps to share data and therefore expand their reach.
After you sign in, you get an OTP generated using Firebase Phone Authentication. After you login, the application starts a background service that constantly publishes and receives the Firestore Database UIDs, by using the Nearby Messages API from Google. When two devices are in close proximity (approximately 4 metres to 5 metres for Bluetooth + Sonar) their meetup is registered in Firestore.
- Android codebase in Java
- Firebase Authentication (authenticate requests)
- Firestore (database)
- Nearby Messages API (contact tracing)
- Maps (displaying point of contact)
- Firebase messaging service (push notifications)
- Firebase Functions (serverless code)
Built with Android Studio version 3.6.3
What's next for CovSense
- Remove the need to authenticate with a telephone number. Anyone should be able to install the app without sharing personal information. A unique anonymous device ID can be created (instead of a user account) that can be shared with other devices and be stored in a public database.
- Currently the demo is made for Android devices. It needs to be expanded for cross-platform use (both Android / iOS). The Nearby Messages API that is used for contact tracing can be implemented on iOS as well.
- Make the database public to be used by other contact tracing apps, or contribute to an existing global database for contact tracing. The simplicity of a NoSQL key/value database of step 3 can increase the speed of lookups if we expand the database to be made available to other apps. API documentation needs to be created to so that it's easy for other developers to get access to the database.
- With more resources and developers in the long term it's better to shift away from using Google's database and APIs, because many people inherently do not trust an application with a Big Tech underlying infrastructure. This has been shown by the responses to TraceTogether, which people are wary of since it's a governmental institution that people perceive as a untrustworthy. In order to facilitate this shift software needs to be developed that communicates data over Bluetooth classic, BluetoothLE and WiFi. And a public database (preferably from a trusted supplier) needs to be set up.
Documentation and installation guide
For detailed guide on how to run this project, please visit
README.md in our GitHub repo - https://github.com/saivittalb/covsense