We have dropped this project - feel free to use code but its not maintained
Note the idea is evolving rapidly, faster than I can get around to update this README so please check for updates!
The data converter is now live on https://c19.mitra.biz/
The core idea is a simple, viral, way to improve tracking contacts.
This involves comparing datasets of where infected people have been to tracks of users.
We are exploring a variety of ways to work with user location data, but principle among them at the moment is to work with the free fitness trackers that work on most smartphones - e.g. Strava.
A key missing component has been data sets, we've found a few, all in different formats,
so as part of the project we are building an interchange to make any dataset we can find
available in multiple formats so that others can use it.
Links to demonstrate are on http://c19.mitra.biz/
and at this point it can output in Google Takeout, GPX, and KML.
Critique of any part of this is very welcome - please post to an issue in the [https://github.com/mitra42/corona-tracker](Git repo).
Our prefered tracking method is to tie into something, like an exercise tracking app that is already doing the tracking via its API.
We are starting with Strava because its free, and widely used, but the intention is to work with any of them which have a decent API. We are also looking to open conversations with these companies to figure out how to collaborate.
In particular this handles some of the issues around battery consumption of an always-on web page using the location chips.
It may also allow us to offload the contact matching to the APIs of the tracker companies, by uploading patient traces and looking for overlaps.
We are starting with publically available sources, and then building on the work of the pandemic.events team converting that via a common internal format into what formats people need. We see this functionality as generally useful to other teams working on similar problems and welcome such teams to collaborate.
Some of these may be obvious from above or below, but some still need baking in ...
The tracker app API based versions have the advantage of using apps people probably already have, we need to figure out how to message this so that people start using it, and sharing their traces.
This design is still fairly fuzzy as we've focused till now on the underlying toolset.
The user accesses the website, identifies which exervise trackers they have, and can follow links to install one if they have none.
After that point the system will access the data via the tracker's API, typically using OAUTH or similar to grant permission.
At worst case we'd copy the data from the tracker's API and pre-process for searching.
Wherever possible we will avoid storing data, because of the privacy implications.
At first use, we generate a unique id, and either store that in browser local storage or use a cookie.
The customer can optionally register, and add notification information. This is fully optional to allow for privacy concerns that may vary from place to place.
If the person isn't registered, then they can visit the webpage to get updates.
Matching contacts is a bit harder, we can start naive and add some AI once we find someone once we find people who know the epidemiology.
I think the core tech is relatively easy, but I see (at least) the following challenges, and at this point I'm certain I've missed some.
I think this starts off as a simple React website,
For stored data, the back end could either be
Ideally we wont have to store much data, because it will scale through apps that themselves hold data.
In terms of cost, I think we can cover any initial costs by volunteers
and use of servers etc we already have access to.
If it scales that could be an issue.
It has to be zero cost to users, in order to generate the volume.
We would like to keep this very clean - i.e. no selling of data to anyonem, and no ads etc (display public health info and links instead of ads)
Privacy is going to be super important to this
We will need
Note there is no money involved, no plan to sell data so the balance is between:
To install the Proof Of Concept (not even close to a MVP!). Assuming you have git and node.
git clone "https://github.com/mitra42/corona-tracker.git"
cd corona-tracker
PORT=80 USESUPERVISOR=1 RUNUSER=mitra ./install.sh
# Apologies, but it requires root at the moment .... if you are happy to run on
# A non root port, and have already installed node, yarn,
cd corona-tracker
yarn install
cd server
./build.sh
node ./Main.js
# To open the browser based app - still very early explorations
open https://localhost:5000
# To run a data converter for example to get the Korea2 dataset in Google Takeout format
open https://localhost:5000/data/korea2?output=takeout
This will be improved, and may break, but at this early stage ...
Make some edits then ....
# To rebuild any language strings
cd corona-tracker/languages
./languagebuild.js
# To rebuild the UI
cd corona-tracker
webpack --mode development
# If you've changed any batch processing on the server.
cd corona-tracker/server
./build.sh
Then reload the browser window