Git Product home page Git Product logo

thedemodev / covid-safe-paths Goto Github PK

View Code? Open in Web Editor NEW

This project forked from path-check/safeplaces-dct-app

0.0 0.0 0.0 53.82 MB

COVID Safe Paths (based on Private Kit) is an open and privacy preserving system to use personal information to battle COVID

Home Page: https://covidsafepaths.org

License: MIT License

JavaScript 56.64% Starlark 0.35% Java 1.80% Ruby 4.32% Objective-C 1.69% Shell 2.76% Python 0.86% Batchfile 0.71% HTML 16.73% Kotlin 6.48% Swift 7.66%

covid-safe-paths's Introduction

COVID Safe Paths

safe paths logo

Applying the technology and philosophy of Private Kit to COVID-19

https://covidsafepaths.org | https://safepaths.mit.edu


Help us stop COVID-19.

We’re building the next generation of secure location logging to preserve privacy and #flattenthecurve

Location logs provide time-stamped records of where users have been, allowing them to share information with health officials accurately and quickly. This helps support contact tracing efforts to slow the spread of the virus.

What’s truly special about Safe Paths, though, is its privacy protection.

Data never leaves a user's device without their password entry and explicit consent. The location log generated by Safe Paths cannot be accessed from outside the user’s device, meaning data transfer occurs only if the user chooses to share it with a researcher or health official.

Overview

Safe Paths is a ‘privacy-first’ app that allows you to log your GPS trails on your own phone. The information is stored locally and never shared with anyone (not even with us or MIT) until you explicitly decide to manually export the data.

The location log generated by Safe Paths cannot be accessed from outside the user’s device. However, the user can import and export their location information and use it in other projects and applications.

Safe Paths logs your device’s location once every five minutes and stores 14 days of data.

Private Kit WhitePaper

Apps Gone Rogue: Maintaining Personal Privacy in an Epidemic

Downloads for COVID Safe Paths

Google Play | Apple Store

Downloads for Private Kit (technology beta)

Google Play | Apple Store


Development Overview

Android and iOS build on MacOS

Safe Paths is built on React Native v0.61.5

Contributing

Read the contribution guidelines.

Architecture

View the architecture diagram for a basic overview on the sequencing of generalized events and services that are used by Safe Paths.

WhiteLabeling

PathCheck is building two versions of the application. One for location based contact tracing and one for bluetooth based contact tracing. Given that the same application cannot have both gps and bluetooth enabled for privacy considerations, we need be able to build two separate version of the app for distribution.

We are following a white labeling strategy to accomplish this. That is, we have two build targets for each app which use the same codebase. For development, we are preferring to keep as much code as possible common between the two targets.

Developer Setup

First, run the appropriate setup script for your system. This will install relevant packages, walk through Android Studio configuration, etc.

Note: You will still need to configure an Android Virtual Device (AVD) after running the script.

Linux/MacOS

dev_setup.sh

Windows

dev_setup.bat

Running

Note: In some cases, these procedures can lead to the error Failed to load bundle - Could not connect to development server. In these cases, kill all other react-native processes and try it again.

Android (Windows, Linux, macOS)

yarn run-android-gps ## for the location enabled app

yarn run-android-bte ## for the bluetooth enabled app

Device storage can be cleared by long-pressing on the app icon in the simulator, clicking "App info", then "Storage", and lastly, "Clear Storage".

iOS (macOS only)

First, install the pod files:

yarn install:pod ## only needs to be ran once

Then, run the application:

yarn run-ios-gps ## for the location enabled app

yarn run-ios-bte ## for the bluetooth enabled app

Device storage can be cleared by clicking "Hardware" on the system toolbar, and then "Erase all content and settings".

Privacy settings can be reset by going to Settings > General > Reset > Reset Location & Privacy

Release Builds

Generating a release build is an optional step in the development process.

Debugging

react-native-debugger is recommended. This tool will provide visibility of the JSX hierarchy, breakpoint usage, monitoring of network calls, and other common debugging tasks.

Testing

Tests are ran automatically through Github actions - PRs are not able to be merged if there are tests that are failing.

Unit Test

To run the unit tests:

yarn test --watch

Snapshot testing is used as a quick way to verify that the UI has not changed. To update the snapshots:

yarn update-snapshots

e2e Test

Note: Right now, there is only e2e test support for iOS.

e2e tests are written using detox. Screenshots of each test run are saved to e2e/artifacts for review.

To run the e2e tests:

yarn detox-setup ## only needs to be run once
yarn build:e2e:ios ## needs to be run after any code change
yarn test:e2e:iphone{11, -se, 8}

Manual Device Testing

Mobile devices come in many different shapes and sizes - it is important to test your code on a variety of simulators to ensure it looks correct on all device types.

Before pushing up code, it is recommended to manually test your code on the following devices:

  • Nexus 4 (smaller screen)
  • iPhone 8 (smaller screen)
  • Pixel 3 XL (larger screen)
  • iPhone 11 (screen w/ notch)

covid-safe-paths's People

Contributors

alpita-masurkar avatar davidbiga avatar denispapakul avatar efalkner avatar esantus avatar fatkhi avatar filkaris avatar harshvitra avatar heri avatar jacobjaffe avatar jin-stuff avatar johnschoeman avatar kenpugsley avatar krish023 avatar martingd avatar matteocrippa avatar nethravathiputtraju avatar nic-rodriguez avatar pathakparth avatar patrick-erichsen avatar penrods avatar rparet avatar sammakesthings avatar sreekarhub avatar summetj avatar thetimbanks avatar tremblerz avatar troach-sf avatar tstirrat avatar vitorpamplona avatar

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.