From 9ecabc24a6e31f74161bb79cd15f6232b93882c6 Mon Sep 17 00:00:00 2001 From: Patrick Erichsen Date: Fri, 1 May 2020 08:59:43 -0500 Subject: [PATCH] Update dev README (#705) --- CONTRIBUTING.md | 4 +- README.md | 140 ++++++++++++++---- assets/Safe_Paths_Logo.png | Bin 0 -> 18154 bytes ...it Diagram.png => Private_Kit_Diagram.png} | Bin reset_react.sh | 11 -- 5 files changed, 118 insertions(+), 37 deletions(-) create mode 100644 assets/Safe_Paths_Logo.png rename docs/{Private Kit Diagram.png => Private_Kit_Diagram.png} (100%) delete mode 100755 reset_react.sh diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 08bef1144c..1e288b5ce7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,9 @@ We welcome participation in an open project. We want to make it as easy as possible for people to work together, so please follow these guidelines to prepare and submit a pull request. -## How to prepare +- Filtering by [good first issues](https://github.com/tripleblindmarket/covid-safe-paths/labels/good%20first%20issue) is the recommended way to begin contributing to the project + +## Create A New Issue - You need a Github account. You can [create one](https://github.com/signup/free) for free. diff --git a/README.md b/README.md index 9695c39f35..924892a307 100644 --- a/README.md +++ b/README.md @@ -1,70 +1,160 @@ -# COVID Safe Paths ![Android and iOS build on MacOS](https://github.com/tripleblindmarket/covid-safe-paths/workflows/Android%20and%20iOS%20build%20on%20MacOS/badge.svg) - -**Applying the technology and philosophy of Private Kit to COVID** +
+

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 +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. +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. -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. Location information can be imported and exported by the user and used in other projects and applications. +## 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 28 days of data in under 100KB of space. -**Home page:** https://covidsafepaths.org and https://safepaths.mit.edu +### Private Kit WhitePaper + +[Apps Gone Rogue: Maintaining Personal Privacy in an Epidemic](https://drive.google.com/file/d/1nwOR4drE3YdkCkyy_HBd6giQPPhLEkRc/view?usp=sharing) + +### Downloads for COVID Safe Paths + +_coming soon!_ -**Private Kit WhitePaper:** [Apps Gone Rogue: Maintaining Personal Privacy in an Epidemic](https://drive.google.com/file/d/1nwOR4drE3YdkCkyy_HBd6giQPPhLEkRc/view?usp=sharing) +### Downloads for Private Kit (technology beta) -**Downloads for COVID Safe Paths:** _coming soon!_ +[Google Play](https://play.google.com/store/apps/details?id=edu.mit.privatekit) | [Apple Store](https://apps.apple.com/us/app/private-kit-prototype/id1501903733) -**Downloads for Private Kit (technology beta):** [Google Play](https://play.google.com/store/apps/details?id=edu.mit.privatekit) | [Apple Store](https://apps.apple.com/us/app/private-kit-prototype/id1501903733) +
# Development Overview -This is a React Native app version 61.5 +![Android and iOS build on MacOS](https://github.com/tripleblindmarket/covid-safe-paths/workflows/Android%20and%20iOS%20build%20on%20MacOS/badge.svg) + +_Safe Paths_ is a built on [React Native](https://reactnative.dev/docs/getting-started) v0.61.5 + +## Contributing + +Read the [contribution guidelines](CONTRIBUTING.md). ## Architecture -Please refer to `docs/Private Kit Diagram.png` for a basic overview on the sequencing of generalized events and services that are used by Safe Paths. +View the [architecture diagram](docs/Private_Kit_Diagram.png) for a basic overview on the sequencing of generalized events and services that are used by Safe Paths. ## Developer Setup -Run the ```dev_setup.sh``` (Linux/MacOS) or ```dev_setup.bat``` (Windows) for needed tools. It is assumed that Android Studio and/or xcode (on macOS) is set up and configured correctly to run applications in the simulator. For Android Studio, the dev_setup script can help you, but you still may need to configure at least one android virtual device (avd) from within Android Studio first before you can run the app. +First, run the appropriate setup script for your system. This will install relevant packages, walk through Android Studio configuration, etc. -## Running +**Note:** You will still need to [configure an Android Virtual Device (AVD)](https://developer.android.com/studio/run/managing-avds#createavd) after running the script. -```yarn``` must be installed for this project, as it does a better job installing dependendies across platforms. The dev_setup script above should have done that for you. +#### Linux/MacOS -### Install modules to the correct locations +``` +dev_setup.sh +``` + +#### Windows -1. ```yarn install``` (always do this after a new clone or checkout) -2. ```yarn install:pod``` (additional step for macOS if you want to do an iOS build) +``` +dev_setup.bat +``` -### Run the app in a simulator +## 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) -To run in the Android simulator (Windows, Linux, macOS): ``` npx react-native run-android ``` -or (on macOS only) + +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) + ``` +yarn install:pod ## only needs to be ran once npx react-native run-ios ``` -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. +Device storage can be cleared by clicking "Hardware" on the system toolbar, and then "Erase all content and settings". -## Contributing +### Release Builds -Read the [contribution guidelines](CONTRIBUTING.md). +Generating a release build is an optional step in the development process. + +- [Android instructions](https://reactnative.dev/docs/signed-apk-android) + +### Debugging + +[react-native-debugger](https://github.com/jhen0409/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](https://jestjs.io/docs/en/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_](https://github.com/wix/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) diff --git a/assets/Safe_Paths_Logo.png b/assets/Safe_Paths_Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4fab91bd7bddc6dc460ef0fcf83280f42386f5fd GIT binary patch literal 18154 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 a_@B8?&rY#tmCaQKAnbQjf literal 0 HcmV?d00001 diff --git a/docs/Private Kit Diagram.png b/docs/Private_Kit_Diagram.png similarity index 100% rename from docs/Private Kit Diagram.png rename to docs/Private_Kit_Diagram.png diff --git a/reset_react.sh b/reset_react.sh deleted file mode 100755 index 71aa5bc657..0000000000 --- a/reset_react.sh +++ /dev/null @@ -1,11 +0,0 @@ -rm -rf node_modules -rm package-lock.json -rm yarn.lock -rm -rf ios/Pods -rm ios/Podfile.lock - -yarn install -cd ios -pod install -cd .. -