{"id":13475669,"url":"https://github.com/Path-Check/safeplaces-dct-app","last_synced_at":"2025-03-27T00:31:44.887Z","repository":{"id":37022301,"uuid":"244064397","full_name":"Path-Check/safeplaces-dct-app","owner":"Path-Check","description":"COVID Safe Paths (based on Private Kit) is an open and privacy preserving system to use personal information to battle COVID","archived":false,"fork":false,"pushed_at":"2023-10-20T01:08:38.000Z","size":72949,"stargazers_count":466,"open_issues_count":33,"forks_count":283,"subscribers_count":43,"default_branch":"develop","last_synced_at":"2025-03-18T04:49:24.881Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://covidsafepaths.org","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Path-Check.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2020-03-01T00:48:26.000Z","updated_at":"2024-10-12T18:46:25.000Z","dependencies_parsed_at":"2023-02-05T03:32:03.689Z","dependency_job_id":"7f2c6bb8-3121-493e-b0db-0d76a96a6c42","html_url":"https://github.com/Path-Check/safeplaces-dct-app","commit_stats":null,"previous_names":[],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Path-Check%2Fsafeplaces-dct-app","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Path-Check%2Fsafeplaces-dct-app/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Path-Check%2Fsafeplaces-dct-app/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Path-Check%2Fsafeplaces-dct-app/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Path-Check","download_url":"https://codeload.github.com/Path-Check/safeplaces-dct-app/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245760797,"owners_count":20667887,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T16:01:22.395Z","updated_at":"2025-03-27T00:31:43.797Z","avatar_url":"https://github.com/Path-Check.png","language":"TypeScript","funding_links":[],"categories":["TypeScript","Misc","⚙️ Backend \u0026 APIs","Health"],"sub_categories":["React Native","Contact Tracing"],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003eCOVID Safe Paths\u003c/h1\u003e\n\n  \u003ca href=\"https://pathcheck.org/\"\u003e\n    \u003cimg\n      width=\"80\"\n      height=\"67\"\n      alt=\"pathcheck logo\"\n      src=\"./assets/Safe_Paths_Logo.png\"\n    /\u003e\n  \u003c/a\u003e\n\n  \u003cb\u003e**https://pathcheck.org/**\u003c/b\u003e\n\u003c/div\u003e\n\n\u003chr /\u003e\n\n# Project Overview\n\nHelp us stop COVID-19.\n\nCOVID Safe Paths is a mobile app for digital contract tracing (DCT) sponsored by Path Check a nonprofit and developed by a growing global community of engineers, designers, and contributors. Safe Paths is based on research originally conducted at the MIT Media Lab.\n\n## Privacy Preserving\n\nWhat’s truly special about Safe Paths is our strong commitment to preserving the privacy of individual users. We're building an application that can help contain outbreaks of COVID-19 without forcing users to sacrifice their personal privacy. For example, if a user chooses to use Safe Paths to maintain a record of their locations use a time stamped GPS log, which stores 14 days of data in 5 minute increments. The location log is stored on the user's phone. The logged data only leaves the device if the user chooses to send the information to an authorized public health authority (PHA) as part of the contact tracing process.\n\n## Multiple Capabilities\n\nSafe Paths is designed to support a range of DCT and public health use cases. Currently the main build uses GPS for location tracking. Our roadmap includes adding support for other location and proximity technologies, symptom tracking, and communication with PHAs.\n\n## Multiple Implementation Strategies\n\nThe Safe Paths app is being developed to support a variety of build 'flavors' of the application around core health and tracing functionality. Reach out to our team to discuss creating a flavor for your use-case.\n\n### Path Check Release of COVID Safe Paths\n\nSafe Paths is available as an app published by Path Check in the [Apple App Store](https://apps.apple.com/us/app/covid-safe-paths/id1508266966) and the [Google Play App Store](https://play.google.com/store/apps/details?id=org.pathcheck.covidsafepaths). Any authorized pubic health authority can use Safe Paths.\n\n### Custom Builds\n\nWe welcome public health authorities and other organizations implementing digital contact tracing strategies to create custom builds for their specific needs, incorporate Safe Paths features into their applications, or create downstream projects that stay linked to the Safe Paths project. If intending to fork the repository and develop off of it, be aware that this comes \"at your own risk\" for continued maintenance.\n\n## End-to-End System\n\nSafe Paths is designed to work with Safe Places, a tool for contact tracing teams to work with location data in the course of contact tracing interviews and to publish points of concern. Without having to sharing their own location history, a Safe Paths user can download the points of concern from their PHA to identify if they have had risk of an exposure.\n\n## Broad Non-Developer Community\n\nOne of the important aspects of the Safe Paths open source project is that it's supported by a large community of volunteers in addition to the open source developer community. Spanning as diverse domains as product management, user research, cryptography, security, compliance, design, and videography more than 1,400 Path Check volunteers are working together to support Safe Paths and help drive adoption around the world.\n\n### Learn More\n\n[COVID Safe Paths Website](https://covidsafepaths.org/)\n\n[Apps Gone Rogue: Maintaining Personal Privacy in an Epidemic](https://drive.google.com/file/d/1nwOR4drE3YdkCkyy_HBd6giQPPhLEkRc/view?usp=sharing) - The original white paper.\n\n[COVID Safe Paths Slack](covidsafepaths.slack.com) - Where the community lives.\n\n[Path-Check/gaen-mobile](https://github.com/Path-Check/gaen-mobile) - PathCheck's GAEN based contract tracing solution.\n\n### Downloads for COVID Safe Paths\n\n[Google Play](https://play.google.com/store/apps/details?id=org.pathcheck.covidsafepaths) | [Apple Store](https://apps.apple.com/us/app/covid-safe-paths/id1508266966)\n\n\u003cbr /\u003e\n\n# Development Overview\n\n![Android and iOS build on MacOS](https://github.com/Path-Check/covid-safe-paths/workflows/Android%20and%20iOS%20build%20on%20MacOS/badge.svg)\n\n_Safe Paths_ is built on [React Native](https://reactnative.dev/docs/getting-started) v0.61.5\n\n## Contributing\n\nRead the [contribution guidelines](CONTRIBUTING.md).\n\nIf you're looking for a first ticket - please check out the backlog for a bug or first story [JIRA project.](https://pathcheck.atlassian.net/secure/RapidBoard.jspa?rapidView=9\u0026projectKey=SAF\u0026view=planning.nodetail\u0026selectedIssue=SAF-264\u0026issueLimit=100)\n\n## Architecture\n\nView 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.\n\n## Developer Setup\n\nFirst, run the appropriate setup script for your system. This will install relevant packages, walk through Android Studio configuration, etc.\n\n**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.\n\n### Linux/MacOS\n\n```Shell\ndev_setup.sh\n```\n\n### Windows\n\n```Shell\ndev_setup.bat\n```\n\n### Environment\n\nPopulate the following `.env` files. View an example file at `example.env`\n\n```Shell\n.env.dev\n.env.staging\n.env.release\n```\n\nYou can configure `AUTHORITIES_YAML_ROUTE` against `https://raw.githubusercontent.com/Path-Check/trusted-authorities/master/staging/authorities.1.0.1.yaml`.\n\n`ZENDESK_URL` can be omitted in development, and the Report Issue page will throw an error when submitting.\n\n## Running\n\n**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.\n\n### Android (Windows, Linux, macOS)\n\n```Shell\nyarn run-android ## for the location enabled app\n```\n\nDevice storage can be cleared by long-pressing on the app icon in the simulator, clicking \"App info\", then \"Storage\", and lastly, \"Clear Storage\".\n\n#### iOS (macOS only)\n\nFirst, install the pod files:\n\n```Shell\nyarn install:pod ## only needs to be ran once\n```\n\nThen, run the application:\n\n```Shell\nyarn run-ios ## for the location enabled app\n```\n\nDevice storage can be cleared by clicking \"Hardware\" on the system toolbar, and then \"Erase all content and settings\".\n\nPrivacy settings can be reset by going to Settings \u003e General \u003e Reset \u003e Reset\nLocation \u0026 Privacy\n\n### Release Builds\n\nGenerating a release build is an optional step in the development process.\n\n- [Android instructions](https://reactnative.dev/docs/signed-apk-android)\n\n### Debugging\n\n[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.\n\n## Tooling\n\n#### TypeScript\n\nThis project is using\n[typescript](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html).\n\nRun the complier with:\n```Shell\nyarn tsc\n```\n\nNot every file *needs* to be written in TypeScript, but we are preferring to use\nTypeScript in general.\n\nNote that for React-Native projects, TypeScript complication is handled by the\nmetro-bundler build process and there is no need to emit js code into a bundle\nas one would do in a web context, hence the inclusion of the `--noEmit` flag.\n\n#### Prettier\n\nThis project is using [prettier](https://prettier.io/docs/en/install.html).\n\nWe have a local prettierrc file, please make sure your development environment\nis set to use the project's prettierrc.\n\n#### Husky\n\nThis project is using [husky](https://github.com/typicode/husky) to automate\nrunning validation and tests locally on a pre-push git hook.\n\nIf you ever need to push code without running these scripts, you can pass the\n`--no-verify` flag on `git push`.\n\n#### ESLint\n\nThis project is using [eslint](https://eslint.org/docs/user-guide/getting-started).\n\nWe have linting checks on CI, please make sure to include the checks locally in\nyour IDE.\n\n## Testing\n\nTests are ran automatically through Github actions - PRs are not able to be merged if there are tests that are failing.\n\n### Static Testing\n\nTo run the static analysis tools:\n\n```Shell\nyarn validate\n```\n\n### Unit Test\n\nTo run the unit tests:\n\n```Shell\nyarn test --watch\n```\n\n[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:\n\n```Shell\nyarn update-snapshots\n```\n\n### e2e Test\n\n**Note:** Right now, there is only e2e test support for iOS.\n\ne2e tests are written using [_detox_](https://github.com/wix/Detox). Screenshots of each test run are saved to `e2e/artifacts` for review.\n\nTo run the e2e tests:\n\n```\nyarn detox-setup ## only needs to be run once\nyarn build:e2e:ios ## needs to be run after any code change\nyarn test:e2e:iphone{11, -se, 8}\n```\n\n### Manual Device Testing\n\nMobile 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.\n\nBefore pushing up code, it is recommended to manually test your code on the following devices:\n\n- Nexus 4 (smaller screen)\n- iPhone 8 (smaller screen)\n- Pixel 3 XL (larger screen)\n- iPhone 11 (screen w/ notch)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPath-Check%2Fsafeplaces-dct-app","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FPath-Check%2Fsafeplaces-dct-app","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FPath-Check%2Fsafeplaces-dct-app/lists"}