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

Overview

COVID Safe Paths

pathcheck logo

https://pathcheck.org/


Project Overview

Help us stop COVID-19.

COVID 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.

Privacy Preserving

What’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.

Multiple Capabilities

Safe 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.

Multiple Implementation Strategies

The 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.

Path Check Release of COVID Safe Paths

Safe Paths is available as an app published by Path Check in the Apple App Store and the Google Play App Store. Any authorized pubic health authority can use Safe Paths.

Custom Builds

We 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.

End-to-End System

Safe 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.

Broad Non-Developer Community

One 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.

Learn More

COVID Safe Paths Website

Apps Gone Rogue: Maintaining Personal Privacy in an Epidemic - The original white paper.

COVID Safe Paths Slack - Where the community lives.

Path-Check/gaen-mobile - PathCheck's GAEN based contract tracing solution.

Downloads for COVID Safe Paths

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.

If you're looking for a first ticket - please check out the backlog for a bug or first story JIRA project.

Architecture

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

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

Environment

Populate the following .env files. View an example file at example.env

.env.dev
.env.staging
.env.release

You can configure AUTHORITIES_YAML_ROUTE against https://raw.githubusercontent.com/Path-Check/trusted-authorities/master/staging/authorities.1.0.1.yaml.

ZENDESK_URL can be omitted in development, and the Report Issue page will throw an error when submitting.

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 ## for the location 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 ## for the location 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.

Tooling

TypeScript

This project is using typescript.

Run the complier with:

yarn tsc

Not every file needs to be written in TypeScript, but we are preferring to use TypeScript in general.

Note that for React-Native projects, TypeScript complication is handled by the metro-bundler build process and there is no need to emit js code into a bundle as one would do in a web context, hence the inclusion of the --noEmit flag.

Prettier

This project is using prettier.

We have a local prettierrc file, please make sure your development environment is set to use the project's prettierrc.

Husky

This project is using husky to automate running validation and tests locally on a pre-push git hook.

If you ever need to push code without running these scripts, you can pass the --no-verify flag on git push.

ESLint

This project is using eslint.

We have linting checks on CI, please make sure to include the checks locally in your IDE.

Testing

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

Static Testing

To run the static analysis tools:

yarn validate

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)
Comments
  • Auto add authorities

    Auto add authorities

    Description

    This PR creates a new notification and filtering feature for Healthcare Authorities in a user's location.

    Issue

    #425

    How to test

    Unit

    npx jest HCAService.spec.js

    Integration

    • Visit the Choose health authority screen and press the Add Trusted Source button. Press the GPS filter switch and confirm that all health authorities are removed (the current live yaml file does not include a bounds field so by default there will be no authorities in your area)

    Comments / Concerns

    • I added a line to the BackgroundTaskService that will send a push notification to the user every 12 hours if there is an authority in their region that they haven't subscribed to.
      • Is 12 hours too frequent? I believe we can only have a single BackgroundTaskService (ours runs every 12 hours to check for intersections), so I'm not sure how else we could check at a pre-defined interval.
      • What if a user intentionally decides not to subscribe to a particular authority? Currently, they will continue to get a notification every 12 hours to subscribe.
    • It would be nice if upon receiving a push notification, we could direct users to the Choose health authority screen. However, the only way to do that on iOS as far as I can tell is through the deprecated alertAction param. I believe that we can do this for Android through the action field for local notifications, but I'm not sure if we want that inconsistency between platforms.
    • I'm not sure of a good way to test the push notification piece of this PR without changing some code around to force the notification and then revert the changes. I was thinking of doing a similar approach that we use for intersections but would like some feedback before implementing. @tstirrat - feedback here would be appreciated.
    • Currently, the authorities list does not contain bounds info. @penrods - how should we go about updating that file on raw.githack, and in general, is there a way that we're going to force authorities to include bounds? And in the case where a user uploads an authority with the Add authority via URL option, will we just allow them to not include bounds?

    Translation Notes

    There are several new strings for translation.

    Do Not Merge (yet) 
    opened by Patrick-Erichsen 20
  • (Fix) Improve Google Location Data import Experience, fix import logic

    (Fix) Improve Google Location Data import Experience, fix import logic

    Rebase of https://github.com/tripleblindmarket/covid-safe-paths/pull/282.

    This PR addresses 2 issues:

    Other things done besides fixes above:

    • Add logic to import last 2 months from Google takeout as safe paths is concerned only about locations for recent couple of weeks
    • Add checks if files exist before reading
    • Add info messages on import complete:

    Success: Screen Shot 2020-04-08 at 5 39 29 PM

    Already imported: Screen Shot 2020-04-08 at 5 37 41 PM

    No recent locations: Screen Shot 2020-04-08 at 5 37 35 PM

    Select file screen if downloaded locally: Screen Shot 2020-04-08 at 5 29 13 PM

    Closes #77 Closes #69 Closes #315

    High Priority 
    opened by sergesemashko 20
  • Test extreme data loads

    Test extreme data loads

    We need to be able to support very high levels of points of concern, with a "full" set of location data (over the last 14 days).

    As a rough estimate, this is users location data should be on order of 28 x 24 x 12 = 8064 As a rough estimate, based on NY, the current 14 day growth is ~64000, so points of concern could be on order 64000 x 14 x 24 x 12 x 0.5 = 53,760,000

    The point of this test would be to know processing time and memory usage. Also, determine limits so the app can protect itself in case of extreme data loads.

    In Progress - Check Jira 
    opened by kenpugsley 20
  • POSSIBLE BUG: Import of Location history from Google fails on at least some devices - DHM-S1-8

    POSSIBLE BUG: Import of Location history from Google fails on at least some devices - DHM-S1-8

    I was not able to get this function to work, despite following all on-screen instructions. o Within the embedded Google Account pane, I was able to export & download my location history. o After that, instructions were to “open this screen again. The data will import automatically”. I tried to do this many times, but did not succeed. I don’t know whether that’s a functional issue or a UX issue.

    Notes in https://github.com/tripleblindmarket/covid-safe-paths/issues/69 suggest that other users have managed to get this to work (though they lamented the user experience).

    So I don't know what the issue was with my phone. Please let me know what diags would be useful and I'll aim to provide.

    Note that this is one of the key basic functions of the App, so if it's not working on some devices, that seems like a serious concern.

    opened by diarmidmackenzie 17
  • FEATURE REQ: Auto-subscribe to Healthcare Authorities

    FEATURE REQ: Auto-subscribe to Healthcare Authorities

    Currently the user must manually subscribe to a Healthcare Authority. This will grow to a point where it is a difficult UI to work with. I propose the following:

    1. Extend the Healthcare Authority yaml which lives on the safe-places repo to include a GPS bounding box.
    2. If the user has no existing Healthcare Authority, the app checks that file once every 24 hours. If the user's current GPS coordinate is within any bounding box, they should be given a popup notification that a Healthcare Authority exists in their are, "Would you like to subscribe?" ** This should only happen until they have the first authority to avoid overloading the server with millions of requests **
    3. A similar process can be used when the user manually enters the Subscription page. I'm not worried about server overload on a manual process. This can limit the list to authorities which contain any of the points in their full 28-day GPS history, then have a checkbox that will show All Authorities.

    The list which they are checked against should be a "production" URL from http://raw.githack.com/. This will provide decent buffering of the Github server infrastructure, but it is VERY IMPORTANT we purge the cache anytime a new Healthcare Authority is added to the YAML.

    This is the production (cached for a year) CDN URL: https://rawcdn.githack.com/tripleblindmarket/safe-places/940edc081b8a4771deca806ed570eda907b5a261/healthcare-authorities.yaml

    opened by penrods 16
  • Securely Store Location Data + Other improvements

    Securely Store Location Data + Other improvements

    Securely store locations in encrypted Realm db

    This PR securely stores all captured Geolocation coordinates in an encrypted Realm database.

    • Secures Locations imported via Google
    • Migrates old locations to new secure storage -> deletes old on success
    • Still allows for json export
    • Fixes bug where locations stopped being captured after device restart

    Linked issues:

    #527 Fixes https://github.com/safe-paths-contrib/covid-safe-paths/issues/29

    How to test

    For debug builds, you can download the Realm database inside the apps storage. You can open the database using Realm Studio: https://realm.io/products/realm-studio/. Because the database is encrypted, you will need to log a hex-encoded encryption key.

    opened by troach-sf 15
  • Patch for android restart bug in react-native-background-geolocation

    Patch for android restart bug in react-native-background-geolocation

    Description

    react-native-background-geolocation bug fix that described in #523

    How to test

    Restart your device. You should see the SafePaths notification in drawer within a minute or two, indicating that react-native-background-geolocation is pulling location again.

    Fixed the issue using patch-package. The patch show many lines changed due to jettifier, but the patch itself was a single line (L248)

    opened by troach-sf 15
  • Fix/tracing strategy bt

    Fix/tracing strategy bt

    Description:

    Fixes crash on launch of bt build variant because .env.bt is not read correctly

    Linked issues:

    Fixes #1221 Fixes luggit/react-native-config#467

    Screenshots:

    How to test:

    yarn run-android-bt -- no crash in App.js

    opened by crayne 13
  • Issue 564 - change message ( fixed english only )

    Issue 564 - change message ( fixed english only )

    Description

    resolves issue 564. the message was confusing so was changed (in the english resourse only ) to the suggested stopped when location services are disabled or stopped at user request

    How to test

    1 go to settings, click on stop logging text or icon, see message appears. it should now read Location Tracking was disabled Stopped at user request. 2 go to settings turn off location services from OS. click on stop logging text or icon see message appears. it should now read Location Tracking was disabled Stopped. (any ideas for unit tests)

    Still todo other languages (please advise!) (In another locale the english text will appear until the translation is present I think)

    Fixes #564

    question Do Not Merge (yet) 
    opened by aitkeni 13
  • Improve Google Location Data import experience

    Improve Google Location Data import experience

    The Import functionality is great, but still tricky to use. It might take a few iterations to get it to what we want, but here are some thoughts:

    Break the Import into three stages, kinda like an old-school Wizard.

    1. "Intro" page. Explain what this does and give instructions to log in and start the process w/Google. Q: Can we explore the DOM on the webview? It would be cool to watch for an indicator that the request for a takeout has happened, then move to the "Waiting" step described below.
    2. "Waiting on Google takeout" page If the user returns to Import page, show a message that we are still waiting on the takeout file. Include a "Start over" button to go back to Step 1 in case something fails.
    3. "Import Complete" After an import completes, the results of the import should be remembered and displayed. E.g. "28 day of data imported from Mar 1 - Mar 28". Also have an "Import again" button that goes back to step 1.

    During Step 2 the user should be be able to leave the app or go back to the main page. We should have a background task look for the takeout file when one is pending, so you don't have to go back to Import. The app should show a notification when the takeout file is found and process completes.

    Discussion is welcome. I expect the implementer will find challenges and opportunities to improve this sequence. For instance, there might be a step 2.5 that helps with the download of the Takeout file.

    Enhancement High Priority 
    opened by penrods 13
  • Repeated notification when location disabled due to redundant checks

    Repeated notification when location disabled due to redundant checks

    Version

    • Type of phone: Android / iPhone
    • OS Version:
    • Model: iPhone 11 (simulator)

    Steps to reproduce

    Go to Settings, turn off location

    1. You get notification
    2. now you pull the notification drawer and swipe on notification to get rid of it
    3. Drawer closes and the app comes in foreground and another notification gets triggered
    4. Go to 2.

    Expected Behavior

    Any event should generate notification only once in general, the way we trigger notification in our app is asynchronously checking states at every screen mount/refresh, we need to shift the logic perhaps

    opened by tremblerz 12
  • Can someone please translate this?

    Can someone please translate this?

    placeVisit" : { "location" : { "latitudeE7" : 324914959, "longitudeE7" : -921784525, "placeId" : "ChIJbbNi6KM3LoYRvSDTmrO3fYY", "address" : "223 W Heights Dr\nWest Monroe, LA 71292\nUSA", "name" : "223 W Heights Dr", "sourceInfo" : { "deviceTag" : -1864277346 }, "locationConfidence" : 36.61622 }, "duration" : { "startTimestampMs" : "1607129593011", "endTimestampMs" : "1607130430990" },

    opened by manda545 1
  • Android notification channels (categories) SAF-782

    Android notification channels (categories) SAF-782

    Why this issue The notification problem is a bit confusing, so I wanted to create a document to explain my findings. Also, there will be PRs in 2 repositories, so I wanted a place to describe the whole solution.

    Existing problem

    Issue reported here on Jira. There are 4 different notification categories (called Channels in code) on Android, and they're a bit confusing. In addition to being confusing, having a Sync Service notification might cause concerns that the app is syncing collected data.

    Cause

    • Every notification on android requires having a channel.
    • The existing 4 channels are created in 2 different places
      • Setting up the react-native-push-notification to be used for pushing local notifications. This is a valid category of notifications, however, the configuration in the AndroidManifest here used the code name "covidsafepaths_kit_notification_channel" for the category instead of a human readable name.
      • The Path-Check/background-geolocation-android submodule setting up the other 3 categories (a) Service channel - required to do background notification. This is valid, but should be renamed. (b) Sync channel - this should be removed as we're not doing any syncing work. (c) Android Permission Channel - as far as I can tell, this is not being used, as we're creating our own notifications for the permission here. However, I don't want to remove it without additional knowledge. We should still rename this to avoid the duplication and make it clear.

    Proposed solution

    1. Remove the sync service category, and rename the other categories as follows

    Note: the unreadable channel name was configured in AndroidManifest.xml instead of code, so the change will not be reflected after the app update, but only after a fresh install or reinstall. I have tried to find solutions to this but haven't found any. Perhaps someone with better Android experience can help.

    1. Once we've determined that the Android Permission category is not actually used, we should remove it, leaving only 2 valid categories, Background service and General notifications.

    2. Rename the background notification from

    as it is not clear, and some text is cut off (no option to expand) to the newer version (copy can be changed):

    I will submit the related PRs for this proposed solutions and update the issue.

    opened by tindn 3
  • Unlink react-native-local-resource

    Unlink react-native-local-resource

    Hello there! I got this error when i run yarn react-native-local-resource . I run this react-native unlink react-native-local-resource but still not working. Thank you all

    $ yarn react-native run-android
    error React Native CLI uses autolinking for native dependencies, but the following modules are linked manually:
      - react-native-local-resource` (to unlink run: "react-native unlink react-native-local-resource")
    This is likely happening when upgrading React Native from below 0.60 to 0.60 or above. Going forward, you can unlink this dependency via "react-native unlink <dependency>" and it will be included in your app automatically. If a library isn't compatible with autolinking, disregard this message and notify the library maintainers.
    Read more about autolinking: https://github.com/react-native-community/cli/blob/master/docs/autolinking.md
    
    opened by MichaelAndrianai 0
  • Path Check BT crashes when executed

    Path Check BT crashes when executed

    Issue type

    Environment

    Version

    • Release build version: 1.22.4

    Affected Devices

    | Brand | Model | OS | | ------------ |:-------------:| ----:|

    Samsung Galaxy S8 emulator Samsung Galaxy S9 device

    Affected Languages

    Steps to reproduce

    yarn run-android-bt

    Expected Behavior

    Normal onboarding

    • When I click Stop Logging I am taken to the Import screen. Expect to go back to the Welcome greeting.

    image

    opened by crayne 4
  • [Onboarding] - Permissions Flow Bugs

    [Onboarding] - Permissions Flow Bugs

    Issue type

    UI

    Steps to reproduce

    • Navigate to permissions steps in onboarding
    • Select "Enable Location"
    • Screen advances immediately without waiting for the user to approve/deny location permissions

    Expected Behavior

    • When I click "Enable Location", the screen does not advance until I approve or deny

    Upload any files to the Issue useful in helping us to investigate

    In the screenshot below, note that the screen has advanced to the HA permissions before the user has selected approve/deny from location permissions Screen Shot 2020-05-28 at 11 18 46 PM

    good first issue UI/UX 
    opened by Patrick-Erichsen 5
  • WebView not resizing the content to fit width of the screen in the FAQ page

    WebView not resizing the content to fit width of the screen in the FAQ page

    Steps to reproduce

    Open the App Open Hamburger menu Tap "Latest News" to navigate to SafePath News screen Tap on Hamburger Menu against COVID SafePaths Tap on FAQ

    Expected Behavior

    The FAQ page should display the hamburger menu without scrolling horizontally and wrap all the content to fit the container width.

    UI/UX 
    opened by Namit-Agrawal 6
Releases(v1.0.1)
  • v1.0.1(Apr 29, 2020)

    Release 1.0.0

    Minor release update fix a couple of items found in the 1.0.0 release.

    Changes / Fixes in this Release

    • Remove healthcare selection to onboarding flow (#679)
    • Minor EULA updates (#671)
    • Fix settings icon on iOS (#687)
    • Fix issue where news from the healthcare authority was not shown (#704)
    • As always, lots of back end work
    • English and Haitian Creole Translation

    Items Still Removed For v1.0.1 (But will be back soon)

    • Google location data import
    • All language support except English and Haitain Creole

    Languages / Locales (as of this release)

    NOTE: As of this release, only English and Haitian Creole are supported

    • English
    • Haitian Creole
    Source code(tar.gz)
    Source code(zip)
    COVIDSafePaths_1.0.1.aab(28.80 MB)
    COVIDSafePaths_1.0.1.apk(27.01 MB)
  • v1.0.0(Apr 24, 2020)

    Release 1.0.0

    After what seemed like forever (but was really about a week) we now display our EULA to first time users, fully support Haitian Creole, have updated our onboarding flow, and added the ability to force update the app. This version of the app is ready for Health Authority use in the U.S. and Haiti!

    Major Changes / Fixes in this Release

    • EULA (#638, #666)
    • Add healthcare selection to onboarding flow (#657)
    • Multiple issues with text cropping and layout across many screen sizes (#627, #628, others)
    • Ability to nudge user to update (#653, others)
    • Fix to prevent excessive pop up notifications (#665)
    • Ability to turn off location tracking in app, also to reselect the desired language (#549)
    • Lots of back end work
    • English and Haitian Creole Translation

    Items Removed For v1.0.0 (But will be back soon)

    • Google location data import
    • All language support except English and Haitain Creole

    Languages / Locales (as of this release)

    NOTE: As of this release, only English and Haitian Creole are supported

    • English
    • Haitian Creole
    Source code(tar.gz)
    Source code(zip)
    app-release-refs.tags.v1.0.0.aab(27.63 MB)
    app-release-refs.tags.v1.0.0.apk(25.85 MB)
  • v0.9.5(Apr 21, 2020)

    Beta release 0.9.5

    PLEASE NOTE: THIS IS NOT YET THE FINAL RELEASE CANDIDATE. PLEASE READ ALL NOTES BELOW

    Major Changes / Fixes in this Release

    • Import of Google location data has been completely reworked (#410)
    • Support for multiple authorities when evaluating possible exposures (#529)
    • Update of splash screens and various wordings (#562, #552, others)
    • Ability to turn off location tracking in app, also to reselect the desired language (#549)
    • Lots of back end work to solidify the codebase
    • Many partial language updates

    Languages / Locales (as of this release)

    NOTE: At the current time, all languages still have partial support only. Translations in all languages is ongoing.

    • Spanish
    • French
    • Haitian Creole
    • Indonesian
    • Italian
    • Russian
    • Vietnamese
    • Traditional Chinese
    • Arabic (yes, right to left!)
    • Dutch
    • Malayalam
    • Polish
    • Romanian
    • Slovak
    Source code(tar.gz)
    Source code(zip)
    app-release-refs.tags.v0.9.5.aab(27.59 MB)
    app-release-refs.tags.v0.9.5.apk(25.81 MB)
  • v0.9.4(Apr 16, 2020)

    Beta release 0.9.4

    Continuation of the primary beta codeline.

    Changes / Fixes in this release:

    • Huge update to the event history - calendar view (#467)
    • Notification fixes
    • Language Updates
    • Various typos, build issues, bug fixes
    • Full list of changes: https://github.com/tripleblindmarket/covid-safe-paths/compare/v0.9.2...v0.9.4

    Languages / Locales (as of this release)

    • Spanish
    • French
    • Haitian Creole
    • Indonesian
    • Italian
    • Russian
    • Vietnamese
    • Traditional Chinese
    Source code(tar.gz)
    Source code(zip)
    COVIDSafePaths_0.9.4.ipa(14.11 MB)
    COVIDSafePaths_0.9.4_1.apk(26.41 MB)
  • v0.9.3(Apr 16, 2020)

    Beta release 0.9.3

    NOTE: This is a special build of COVID Safe Paths that has minimum functionality only for initial approval in the app stores. Future builds will have all functionality returned.

    Functionality changes in this build (and only this build):

    • Wording changes on many screens
    • Start up flow reduced to one screen only
    • No "view overlap" functionality

    For most users we suggest getting the next version (v0.9.4) as that more accurately represents where the app is intended to be very soon after app store availability.

    Source code(tar.gz)
    Source code(zip)
    COVIDSafePaths_0.9.3.ipa(14.21 MB)
    COVIDSafePaths_0.9.3_1.apk(26.51 MB)
    COVIDSafePaths_0.9.3_2020_04_16.aab(28.29 MB)
  • v0.9.2(Apr 12, 2020)

    Beta release 0.9.2

    Very Important: There has been a significant change in this release. You MUST delete any previous version of the app before installing this beta. If you do not, you will end up with 2 Safe Paths apps - if that happens, just delete them both and load this one again! Also note, any location data you already have will be lost.

    Changes / Fixes in this release:

    • Updated location storage algorithm to account for stationary properly (#422)
    • Refined exposure display for readability (#436, #466)
    • Italian translation (#441)
    • Splash screen update on iOS (#417)
    • Final removal of the Private Kit internal folder structures and monikers (#465)
    • Stability and build changes/updates (many many issues)
    Source code(tar.gz)
    Source code(zip)
    app-release-refs.tags.v0.9.2.aab(26.94 MB)
    app-release-refs.tags.v0.9.2.apk(25.17 MB)
  • v0.9.1(Apr 9, 2020)

  • v0.9.0(Apr 8, 2020)

    v1.0 beta release 1

    Ready for testers who can sideload the apk onto an Android device.

    Known Issues

    • There are still a few wording finalizations going on.
    • Translations are not yet complete
    • The startup / welcome screen has not been updated with the newest logo / styling
    • The legal / about pages are not hooked up to show the final content yet

    This release is functionally the same as v0.5.12. The version number is the only significant difference.

    Source code(tar.gz)
    Source code(zip)
    app-release-refs.tags.v0.9.0.aab(26.99 MB)
    app-release-refs.tags.v0.9.0.apk(25.22 MB)
  • v0.5.12(Apr 8, 2020)

  • v0.5.11(Apr 6, 2020)

    Android Bluetooth Contact Tracing V1. (#279) Added Kannada Language support (#276) Added Urdu language support (#258) Hindi translation update (#292) CS (Czech) translation (#213) Windows development scripts (#288) Export fix for iOS (#283) FR locale update (#215) [Dev setup] Mac fixes, and clearer instructions (#281) Update Overlap screen to update when it comes into focus (#259) Fix disable location sharing ble (#280) Disable share button on Export screen if no log data (#275) Marathi Translation Update (#268) Catalan translation (#274) Automatic snapshot tests with Jest (#242) Remove duplicated function willParticipate (#271)

    Source code(tar.gz)
    Source code(zip)
  • v0.5.10(Apr 6, 2020)

    Spanish language support based on Miquel Vila Porté's translation (#245) Haitian Creole with Translation Inputs from Gerald McElroy (#238) Add custom map styles to the Overlap map (#246) Italian Translations from Andy Nuzzo (#223, #239, #241) Dutch translation (#225) Brazilian Portuguese language support (#229) Coding practices #236, 189 and Automated UI Testing (#187)

    Source code(tar.gz)
    Source code(zip)
  • v0.5.9(Apr 6, 2020)

  • v0.5.8(Mar 25, 2020)

  • v0.5.7(Mar 25, 2020)

    Bluetooth Broadcasting for Contact Tracing #193 UI Layout fixes. #185 #196 Added feedback for trace overlap if it comes back with no results #190 Translations to Portuguese. #125 Improved data exporter #174 Translations to Marathi #153 #154

    Source code(tar.gz)
    Source code(zip)
  • v0.5.6(Mar 24, 2020)

  • v0.5.4(Mar 23, 2020)

    Updated permission descriptions for the Apple Store (#152) Internationalization (#121, #122, #123, #124) Checks for background geo authorization before updating state (#141) Added a three-dot menu button and licenses page to the main screen (#151, #142) Added Linking in imports (#116)

    Source code(tar.gz)
    Source code(zip)
    app.aab(23.57 MB)
  • v0.5.3(Mar 23, 2020)

  • v0.5.2(Mar 19, 2020)

  • 0.5.1(Mar 17, 2020)

    Add point count info, assists in debugging (#56 ) GPS tracking wasn't running in many cases (#58) Add 'yarn' support when found (#59) Add stationary location logging and savelocation in backgroundtask (#61) Add missing notifications for Location Services (#64) RNFS.DownloadDirectoryPath is not defined on iOS. (#65) This PR includes Andy's original PR (#57) A few bug fixes for iOS related to the latest use of BackgroundLocation Android Headless Task on Issue (#65) and (#54)

    Source code(tar.gz)
    Source code(zip)
    app.aab(22.76 MB)
  • v0.5(Mar 15, 2020)

  • 0.3(Mar 12, 2020)

  • v0.1(Mar 6, 2020)

    Used to generate the very first APK submitted to the Google Play store. It implements the basic functionality:

    • React Native framework
    • Basic icon
    • Initial Welcome screen with Opt In button
    • Main screen with Opt Out button

    After opting in, location snapshots are captured periodically in the background.

    Source code(tar.gz)
    Source code(zip)
Owner
PathCheck Foundation
PathCheck Foundation is dedicated to containing Covid-19 and revitalizing the economy, while preserving privacy and individual liberty.
PathCheck Foundation
EU Digital COVID Certificate Kit for the Apple Platform  (unofficial)

EU Digital COVID Certificate Kit A Swift Package to decode, verify and validate EU Digital COVID Certificates for iOS, tvOS, watchOS and macOS Disclai

Sven Tiigi 32 Oct 4, 2022
A SwiftUI App that displays information about the planets in our solar system.

MySpaceApp Created by Noman Ahmad Current Version : 1.0 Description: MySpaceApp is a simple ios app designed for space enthusiasts. With this app, you

Noman Ahmad 1 Nov 2, 2021
COVID Certificate is the official app for storing and presenting COVID certificates issued in Switzerland.

COVID Certificate is the official app for storing and presenting COVID certificates issued in Switzerland. The certificates are kept and checked locally on the user's phone.

Swiss Admin 111 Dec 19, 2022
ViruSafe aims to help the fight with COVID-19 by offering people to share their symptoms as well track the spread of COVID-19 with an interactive map

ViruSafe aims to help the fight with COVID-19 by offering people to share their symptoms as well track the spread of COVID-19 with an interactive map, that shows how the infection has spread throughout Bulgaria.

scalefocus 16 Feb 9, 2022
iOS SwiftUI starter kit based on Sketch Elements.

iOS Sketch Elements iOS Sketch Elements is iOS SwiftUI starter kit based on Sketch Elements. More information and screenshots here. Roadmap General Na

Filip Molcik 34 Oct 4, 2022
ReadMe app is here to list all of the physical books in your personal library

ReadMe App The ReadMe app is here to list all of the physical books in your personal library, mark books you still have to read review books after you

Ihor Muliar 1 Nov 23, 2021
A Safari extension that redirects Twitter, YouTube, Reddit, and more to privacy friendly alternatives.

Privacy Redirect for Safari A configurable web extension that redirects Twitter, YouTube, Reddit, Google Maps, Google Search, and Google Translate to

null 101 Dec 16, 2022
A open source Swift app for iOS 13 that allows you to check your NFC transit card information. Written with SwiftUI.

ABANDONED Metrodroid, which TransitPal was heavily inspired by, now has its own fully functional iOS app! It should be in the App Store "soon". I stro

Robbie Trencheny 132 Jun 30, 2022
CloudKit Samples: Private Sync with Subscriptions and Push

CloudKit Samples: Private Sync with Subscriptions and Push Goals This project demonstrates using CloudKit Database Subscriptions and push notification

null 0 Nov 11, 2021
Swift Starter Kit with Firebase & Facebook Login Onboarding

iOS Swift Starter Kit ?? ?? ?? ?? Boilerplate Onboarding App in Swift with Firebase Integration, Facebook Login and Push Notifications. Save days of a

Instamobile 105 Nov 7, 2022
Mahmoud-Abdelwahab 5 Nov 23, 2022
Visualize your dividend growth. DivRise tracks dividend prices of your stocks, gives you in-depth information about dividend paying stocks like the next dividend date and allows you to log your monthly dividend income.

DivRise DivRise is an iOS app written in Pure SwiftUI that tracks dividend prices of your stocks, gives you in-depth information about dividend paying

Kevin Li 78 Oct 17, 2022
Provenance is a native macOS application that interacts with the Up Banking Developer API to display information about your bank accounts, transactions, categories, tags and more.

Provenance Provenance is a native macOS application that interacts with the Up Banking Developer API to display information about your bank accounts,

Paul Tavitian 8 Dec 8, 2022
‪‪An app that stores and displays the information entered by the user‬‬

To do list :‬‬ ‪‪An app that stores and displays the information entered by the user‬‬ ‪‪The user can : Add, delete one or clear all , Edit, Show the

null 0 Nov 4, 2021
A Weather information can be searched by a city name and added into a favorite list

A Weather information can be searched by a city name and added into a favorite list. The list can be refreshed with pull to refresh. Move func exists.

Mehmet Can Seyhan 0 Dec 13, 2021
Mobile app for University of Washington students to find resources and information about the school.

ExploreUW App Description Mobile app for University of Washington students to find resources and information about the school. Collaborators Christian

Christian Calloway 2 Jun 3, 2022
A App for Doctor to manage Patient's Information and Logistics Supplies

MckessonPlus A Project for HackDFW 2022 2nd Place at McKesson and 2nd Place at EssilorLuxottica A App for Doctor to manage Patient's Information and L

Frank Gao 2 Sep 27, 2022
Giphy is an open source iOS app based on MVVM (Model–view–viewmodel) software architectural pattern.

Giphy(Search and display gifs) - MVVM Description Giphy is an open source iOS app based on MVVM (Model–view–viewmodel) software architectural pattern.

Tirupati Balan 8 Jun 14, 2022
A SwiftUI app that reads iOS/watchOS/tvOS device model information from Xcode you select.

iVariant A SwiftUI app that reads iOS/watchOS/tvOS device model information from Xcode you select. Preview License iVariant is licensed under MIT. Cop

Lakr Aream 20 Aug 4, 2022