rcvr.app – client app for recover – a product by Railslove
Due to COVID-19, many localities, like bars and restaurants, must keep track of their guest. So, in the case of infection, the public health department can trace contact persons using this data.
The German government suggested a very old-school way on how to achieve this. Owners should put a printed document on each table, and guests have to write down their data with a pen, visible to everyone.
We know we can do better. Those lists are annoying for everyone, and especially a big privacy concern.
With recover, guests scan a QR Code with their phone and enter their contact details, which will be encrypted on their device and stored on our server. Only the business owner can decrypt this data, and only when the public health department requests it.
When an owner signs up, a key pair will be generated on their device. The owner needs to safely store the private key by saving it inside a password manager or writing it on a piece of paper and putting it in a physical safe. This private key is required to decrypt the data of the guests.
The public part of this key pair is embedded inside the QR Code, together with a unique identifier for each table.
When the public health department requests data for a specific time range from an owner, we will send them the guest's encrypted data from this period. The owner can then decrypt this data using his private key and send it to the public health department.
When a guest checks in, a random ID will be saved on the guest's device. recover will provide a public feed of all check-in IDs in danger of a COVID-19 infection. The IDs can be public because they cannot be traced back to a person. Only the guest's device knows if one of the stored IDs is also inside this public feed. If this is the case, we can notify the guest of the potential infection.
recover was initially developed during one weekend. We noticed the urgency and needs of business owners and wanted to provide a solution. A special thanks goes to everyone who helped and consulted us to achieve our goal in this short amount of time.
Stack:
Before you can start, you need:
Setup:
Install the dependencies:
npm install
Start the Next.js app:
npm run dev
The app is now available here: http://localhost:3000
You can also choose a different port, e.g., when you're running rcvr-api already on port 3000.
npm run dev -- -p 3333
Suppose you want to change environment variables locally, for example, the API URL. In that case, you can duplicate .env
to .env.local
and change the variables in your local copy. Read more about environment variables here.
If you want to change environment variables locally, for example the API URL, you can duplicate .env
to .env.local
and change the variables in your local copy. Read more about environment variables here.
To contribute, please simply create a PullRequest. If you have the permissions to merge, please do so yourself, but only after you have at least one approval from a core contributor. If you are working on a ticket from the backlog, please leave a link in the description. Either way, please add a small description of the changes and a screenshot if applicable. Rebasing or squashing are preferred over merges.
origin/master
deploys to rcvr.app on pushorigin/env/care
deploys to care.rcvr.app on pushorigin/env/health
deploys to health.rcvr.app on pushcare/
will use a preview deployment of recover careThis app is using cypress as testing framework. To start testing locally you have to start the development server in ci mode with
npm run start:ci
and keep it running. Start the cypress ui with npm run cypress open
. Alternatively, run the tests on the command line with npm test
.
recover health is a version of recover for institutions like hospitals and nursing homes. It has slight differences in theming and behavior. To switch to recover care, set the environment variable BUILD_VARIANT=health
.
BUILD_VARIANT=health npm run dev
recover care is a version of recover for institutions like hospitals and nursing homes. It has slight differences in theming and behavior. To switch to recover care, set the environment variable BUILD_VARIANT=care
.
BUILD_VARIANT=care npm run dev
rcvr.app is open-source and free software released under the GNU AGPL (GNU Affero General Public License v3.0). We, Railslove GmbH, are committed to ensuring that it will remain a free and open-source project.
Made with 💚 in Cologne