Giter Club home page Giter Club logo

generaliinformatik / mycoradar Goto Github PK

View Code? Open in Web Editor NEW
11.0 8.0 6.0 6.06 MB

my co:radar - anonymous. solidary. safe.

Home Page: http://mycoradar.de

License: MIT License

Dockerfile 0.55% Java 10.13% JavaScript 2.14% TypeScript 73.75% HTML 6.74% CSS 0.43% SCSS 6.25%
wevsvirus wirvsvirus hackathon bund gdis central cosmos flattenthecurve riskgroups mobile-app mobile-development wirvsvirushack wirvsvirushackathon prototype bundesregierung mayflower stayathome mycoradar

mycoradar's Introduction

my co:radar

my co:radar - anonymous. solidary. safe.

logo_small

🇩🇪 Deutsche Übersetzung

An innovative solution for the solidary protection of our community from COVID-19. Anonymous use guaranteed and safe for your health.

Development status

Prototype, Alpha

ℹ️ We are no longer working on this project.

Participating in the #WirVsVirus hackathon was an important and fun experience for us, but we're not going to take it any further:

  • None of the ideas from the "tracking app" category made the cut.

  • A European initiative to create a tracking app was announced right after the hackathon.

  • We're lucky that our day jobs aren't impacted by Corona (besides having to work from home), but that also means we don't have the time to push our idea through by ourselves.

Purpose

As part of the Hackathon #WirVsVirus in 2020, this solution was developed to help control the disease COVID-19.

The solution helps users to keep track of their physical contacts and to inform themselves and others in time in case of an infection with COVID-19. The goal is to interrupt the chain of infection at an early stage and reduce the spread of SARS-CoV-2 so that the healthcare systems can withstand the collapse. The use of this solution complies with the aspects of European data protection (GDPR/EU-DSGVO).

Our idea

Our solution uses unique identifiers from smartphones to determine whether a user has spent too long and too close to a person infected with SARS-CoV-2 according to the guidelines of the Robert Koch Institute (RKI).

For this purpose, the solution checks the following conditions according to the recommendation:

  • keep a distance of at least two metres to other people and
  • do not stay near infected persons for more than 15 minutes.

Otherwise there is a possibility of infection for the user.

Note: If a previously positive tested user recovers, the status can be reset by the user, so that no incorrect notification is sent at a later time.

risk

Technical implementation

With the solution we provide, all devices in the environment are logged by your own device. The IDs are determined via Bluetooth and stored locally as anonymous identification.

From a central server, device IDs of positively tested users are read and the user is warned of a potential infection, thus breaking the chain of infection.

If an ID is only marked as infectious at a later date, all users previously in contact with this ID are informed. This information is provided by client-side synchronization of the list with the IDs known to be infectious.

Architecture

If a user reports himself as infectious, his ID (only this information!) is transmitted to the server and all users in contact with him are informed via the mechanism described above.

Implemented features

  • Acquisition of a unique anonymous ID of the device
  • No collection of personal information
  • Transmission of information via encrypted protocols (in progress)
  • ...

(Features not yet implemented will be described in the "Perspectives" section for further expansion stages after the hackathon)

Technical requirements

Components

Client

  • at least two smartphones (currently Android)
  • Use of the "my co:radar " application on the affected devices (recording of device IDs is possible with one device, but recording and evaluation of a status change only makes sense with a second device - without having to intervene in the data management)
  • activated Bluetooth (on all devices)

Server

  • Server accessible via Internet
  • Docker
  • Use of the backend component for the exchange of users identified as infectious (see Docker mage)
  • Internet connection for data synchronization

Programming languages, frameworks etc.

Privacy

The solution determines a unique ID of the device via Bluetooth (BLE), anonymizes it and uses this anonymized information to match data from other devices.

The data is processed primarily on the user's local device. All device IDs identified in the user's environment, which meet the conditions for a potential infection, are processed anonymized and stored locally.

A synchronization with the server component takes place at regular intervals to determine a list of (also anonymized) device IDs. The IDs are identifiers of devices whose users have tested positive. If a match can be found between this list and the locally stored data, the user is shown a message with recommendations for action. There is no display of device IDs or the location of third-party devices!

The storage of device IDs on the local device is limited to a maximum of 20 days (assumed incubation period plus grace period). A new encounter under these conditions resets the time stamp to the current encounter date.

If the status of another user is changed from previously "infectious" to "recovered" (aka no longer infectious), the entry in the central data storage is removed during the next synchronization. This status will be updated locally the next time the devices are synchronized, thus preventing a new notification.

By processing the device IDs in anonymous form, neither the user nor the server operator can establish a connection between the device (in many cases corresponds to the user) and the processed ID. Note: For productive use, the encryption procedure and processing must be checked and confirmed by the data protection officer!

Perspectives

The application was developed as a prototype within the Hackathon and published under a free license. The idea or the technical implementation approach can be used as desired. A further development after the Hackathon is intended in the context of the private commitment of the participants. Participation by third parties is welcome. We gladly accept your contributions / pull requests.

Future features

Have a look at our issue board.

Your contribution

Please read CONTRIBUTING.md for details about our Code of Conduct and the process for submitting pull requests to us.

Versioning

We use SemVer for the assignment of version numbers. For the available versions please see Tags for this repository.

Authors

  • Anna - UX, Marketing, Landingpage - mcdoubleju
  • Björn - Conception, feedback - BjoernSchotte
  • Claus - Conception, feedback - n/a
  • Desiree - Frontend - DeSy96
  • Iris - Conception, Test - n/a
  • Marianne - Backend - n/a
  • Michael - Frontend - workminimizer-michael
  • Niko - Backend - nikomall34
  • Oliver - Backend - Olli-27
  • René - Github Admin, Video, Communications Host - rfuehrer
  • Sarah - Orga, marketing, video, landing page - n/a
  • Stefan - Conception, pitch, feedback - n/a
  • Stephan - Conception, Marketing, Feedback - stweiss01

See also the list of contributors who have been involved in the project so far.

License

This project is licensed under a MIT license - please see LICENSE.md for more details.

Note: We want to help fight this pandemic as humanity together by making it available. Joint development of appropriate means must not be in the hands of individuals or less. Please support this project and participate in its further development.

Remarks

tba

mycoradar's People

Contributors

bjoernschotte avatar dehesselle avatar dependabot[bot] avatar dvag-desiree-sybertz avatar rfuehrer avatar workminimizer-michael avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mycoradar's Issues

Correct issue filter statement in README

Fix the README.md (and all language specific READMEs) to filter feature requests (closed and open). The working filter statement looks like:

is:issue -label:bug -label:duplicate -label:"good first issue" -label:"help wanted" -label:invalid -label:question -label:wontfix -label:generali -label:documentation -label:website

This is a workaround for the missing function of the logical operators at github queries (missing OR query)

(assuming that the current labels remain as they are)

Cooperation

Hi there,

we're another project from the WirVsVirus hackathon and are trying to tie together all the international efforts that try to work on this problem.

Which leaves the question: How can we best work together? :-)

We coordinate here right now, I would very much like to invite (some?/all?) of you to join our discord or use any other means necessary so we can get into contact.

https://start.ito-app.org

Write our story

The STORY.md must be written to or deleted. Content of the file is the story of our team and the hackathon.

Translate README to english

Translate the README to english to address english speaking contributors.

This is one of the tasks from the team vote of 25th March 2020. With the development of the website mycoradar.eu, which is also to be written in English, English-speaking interested parties may be increasingly addressed

Discuss the current security approach (german language)

Folgende Erweiterung des aktuellen Zustandes soll erreicht werden (aktueller Stand aus unserer gestrigen Diskussion). Bitte Erweiterungen, Korrekturen etc. als Antwort melden.


Funktionsweise

My co:radar ("die App") arbeitet als lokaler Service auf dem Mobiltelefon des Anwenders. Die App generiert beim ersten Aufruf eine eigene zufällige Kennung ("UUID"), die zudem mit einem gerätespezifisch generierten Code ("Code") gesichert wird. Dieser Code wird in der App als Klartext-Information für den Anwender angezeigt und ist später auch als QR-Code abrufbar.

Die App scannt alle 2:30 Minuten (konfigurierbar) per Bluetooth nach weiteren Geräten mit der App ("Ping"). Andere Geräte mit der App senden eine Bestätigung ("Pong") mit der eigenen UUID, die in der suchenden App lokal auf dem Gerät gespeichert wird ("Kontakt"). Gespeichert werden UUIDs des Kontakts und Zeitstempel des Kontakts.

Dabei ist für die abfragende App relevant, wie dicht man sich an anderen Geräten befindet (Signalstärke Bluetooth) und wie lange man sich in der Nähe des anderen Geräts aufhält (Anzahl der Pings). Diese Werte richten sich nach den Empfehlungen des Robert-Koch-Instituts ("RKI"): weniger als 2 Meter Abstand und länger als 15 Minuten. Diese Angaben lassen sich bei Bedarf anpassen.

Wird ein Anwender eines Gerätes nun als positiv COVID-19 getestete, meldet die App darauf hin alle in Kontakt gestandenen UUIDs der vergangenen 14 Tage (anpassbar; gemäß Empfehlung des RKI) an einen zentralen Service ("Backend").

Andere Geräte fragen über das Backend nun regelmäßig die EIGENE UUID gegen diesen Service ab und erhalten eine Rückmeldung. Diese kann entweder Wahr/Falsch oder eine konkrete Handlungsempfehlung beinhalten. Die Ausgabe erfolgt nur nach erfolgreicher AuthZ durch die App und betrachtet zudem nur die Daten, die gemäß RKI-Empfehlung relevant sind (z.B. 14 Tage). Das Backend löscht regelmäßig nicht mehr relevante UUIDs aus dem eigenen Bestand.

Die Nutzung der App als Service hat dabei den Vorteil dass die UUID nur an die App und nicht an das Gerät gebunden ist und bei einer Löschung der App die lokalen und auf dem zentralen Service gespeicherten UUIDs nicht mehr nutzbar sind (Exit-Strategie). Durch das Neugenerieren der UIUID bei erneuter Installation der App wird zudem sichergestellt, dass der Anwender selbstbestimmt an dem Datenaustausch teilnimmt.

Geplanter Informationsaustausch bei Abfragen:

  1. UUID lokal generieren
  2. Code lokal generieren (oder durch Anwender definieren)
  3. UUID und Code an Server melden
  4. Server hasht Code ("Hash")
  5. Server speichert UUID und Hash
  6. weitere Abfragen dann per UUID und Code
  7. Server hasht wieder den Code
  8. Server vergleicht Hashes und antwortet erst bei übereinstimmung

Ausblick:

  • Abfrage von befreundeten/familären UUIDs, wenn die gerätespezifischen Kennwörter bekannt sind
  • 2FA zur Meldung einer Infektion

Build the international website mycoradar.eu

The international website for my co:radar is to be built for the domain mycoradar.eu. The contents are to be described according to the German website. At a later point in time, consideration should be given to how the contents are to be synced between the mycoradar.de and mycoradar.eu sites. Ideally, the website should only represent a static framework in which further content is dynamically integrated.

Fix READMEs in subdirs

The READMEs in directories

/app
/baking
/docs

should be present and filled with helpful information. The information supplements the general information with technical information relevant to the component in the respective subdirectory. The format is still to be agreed, but should be based on standard boilerplates and recommendations.

BlueTooth enabled?

Im not sure why you would need BlueTooth?
I wanted to run a Test in Bluestacks Android Emulator which doesnt Support BlueTooth anyway so i always gets stuck at "turn BlueTooth on"

Apps should not request permissions to things they don't need in my opinion, or do you need use it for tracking proximity? Can't see that from the chart?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.