A simple PWA to scan your EU digital COVID Certificate and generate a passbook from it

Overview

COVID-19 passbook Generator

The aim of this project is to let a user scan a EU Digital COVID Certificate with their smartphone, and generate a passbook, without any data stored on a remote server.

Test it

Netlify Status

We are deploying a stable-ish version online so you can try it out. Better used on your iPhone but also works on Android and your mac. If you spot any bugs, please reach us here or on social media 😃 . You can also browse the opened issues to see if we already spotted that bug. And if you have any improvement idea, that's also possible to send us your feature requests.

Background story

Since EU Digital COVID certificates launched in Luxembourg, there's no application to store your certificate digitally. You can go online and download a PDF or use the grayscale version you got by mail.

Using an application to store those sensitives information can also be an obstacle to some people, and we understand why. Even government application can be questioned, like "tous anticovid" in France, which collect a lot of extra data, including Google pieces of software and usage trackers, especially when you can't look at the source code of those applications.

That's why I came off with the idea of simply using something that does not require installing another piece of software and already handles my credit cards securely: Apple Wallet.

Ok, so, how to do that correctly? Since I don't like spying or fear of it from users, everything possible had to occur on the device itself, including especially:

  • Reading the QRCode & decoding it
  • Extracting information from it
  • Put the user data into the passbook template
  • Call the server for manifest signature
  • Create the passbook archive with the signature

Apple has designed their passbook (the format of the little card you put in your wallet) in a way to be very secure. So they need to be signed to be visible in the Apple Wallet app. At the moment, I didn't find a way of doing this on the user's device without compromising the signing key. However, we need to sign the manifest which contains SHA-1 of your data, not the data itself. That's why we thought about a small web service, which does all of this in-memory:

That's where @biou jumped into the project and helped me to design the lambda required for this and stick with me on several other tasks since.

Contributors & open-source

This work could never have been done without the support of the open source community.

  • EHN DCC Schema for the JSON schema of the code content AND the list of manufacturers, tests, prophylaxis, vaccines, ...
  • Path Check DCC JS SDK for the content extraction from the QR Code, since the one offered by the EHN DCC Dev team requires the pubkeys of each countries (which are undisclosed by choice)
  • Path Check debug tool to help explore the QR code content
  • Nimiq JS QR Scanner
  • JSZIP
  • QRCode lib to generate qrcode for the card preview
  • Raw Git to let you call github hosted file in your code using CloudFlare CDN function
Comments
  • [BUG] Cannot use Scan or Import buttons on iOS

    [BUG] Cannot use Scan or Import buttons on iOS

    On Apple iOS (v12, v13, v14) cannot action the scan or import button. Does nothing. A press is registered but nothing happens, therefor cannot create a EU C19 wallet

    bug question bug:camera 
    opened by dirtymouse 18
  • [feature request] Info shown on Wallet

    [feature request] Info shown on Wallet

    Contact Details

    No response

    Is your feature request related to a problem? Please describe.

    No response

    Describe the solution you'd like

    Currently, some people just check the certificat with the information shown on the it. It means that they do not even use the scanner app to verify the QR Code. Hence, in my opinion, the information shown on the wallet (between name and QR Code) should be more related to that propose.

    Today, the information shown are: birthday, unique certificate identifier and certificate type. If you can update to: birthday (compare with ID), date de vaccination (check if more than 14 days), dose (ex. 2/2), type (of vaccination) and vaccination name. All the other information keep in the details which will be shown by clicking the three-point button.

    You can add your LU certificat to French AntiCovid app, they just display necessary info.

    By the way, if you can remove the word "Show this when requested" under the QR Code, that could be much better. The description here is not mandatory for a wallet card.

    Describe alternatives you've considered

    No response

    Anything else?

    For example:

    [EU Digital COVID Certificate] [Country] LU

    [SURENAMES & FORENAMES] Handsome Clawfire

    [DATE OF BIRTH] [TYPE OF VACCINATION] 01/01/1999 Vaccination

    [VACCINATION NAME*] [DOSE] [DATE] BioNTech 2/2 30/07/2021

    *The name can be replaced with "Product"

    enhancement discussion no-issue-activity 
    opened by MoienBowen 14
  • JS Error on Spanish page

    JS Error on Spanish page

    What happened?

    [please describe]

    Technical detailsError message: ReferenceError: Can't find variable: article

    Page:

    Browser:

    {"ua":"Mozilla/5.0 (iPhone; CPU iPhone OS 15_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148","browser":{"name":"WebKit","version":"605.1.15","major":"605"},"engine":{"name":"WebKit","version":"605.1.15"},"os":{"name":"iOS","version":"15.2"},"device":{"vendor":"Apple","model":"iPhone","type":"mobile"},"cpu":{}}
    

    File: https://covid19passbook.netlify.app/es Line: 1 Column: 8 Stack: global code@https://covid19passbook.netlify.app/es:1:8 CurrentRoute: intro

    bug help wanted no-issue-activity 
    opened by clawfire 10
  • "Safari cannot download file" error message

    Upon clicking "Save to my wallet" i get the error "Safari cannot download file".

    I also tried to Airdrop the .pkpass file downloaded on my mac to the phone, which results in a similar message "Failed to save item. Save to iCloud Drive instead?".

    bug:wallet no-issue-activity 
    opened by brianbovi 10
  • [BUG] Safari 14 requirement on desktop not detected

    [BUG] Safari 14 requirement on desktop not detected

    What happened?

    After successfully recognizing a QR on camera, the app stops on unhandled promise rejection. ReferenceError in @cbor/lib/constants.js as in the screen shot attached.

    What browsers are you seeing the problem on?

    Safari (desktop 13.1.3)

    Are you browsing using

    a computer (macOS Catalina 10.15.7)

    Anything else?

    Screen Shot 2021-10-10 at 23 01 35

    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.3 Safari/605.1.15 https://www.whatismybrowser.com/w/9F68GL4

    bug Next release 
    opened by janbrasna 10
  • [Feature request] Toggle visibility of the certificate type

    [Feature request] Toggle visibility of the certificate type

    Some official covid check apps (eg: Italy’s VerificaC19) are very privacy oriented. They do not show the user’s medical history (such as grounds for the certificate - vaccination/recovery/test) — the only thing displayed is whether the certificate satisfies Italy’s rules. The logic for verifying this obviously has access to the certificate content, but it is not shown to the verification app user. It looks like this:

    FF672326-7387-47E7-9152-95270B6F7E3E

    Therefore, for maximum privacy, we could opt to hide the reason for the certificate in the pass.

    enhancement discussion Privacy no-issue-activity 
    opened by ojura 10
  • [feature request] i18n

    [feature request] i18n

    Is your feature request related to a problem? Please describe. Some of our french speaking users have problems understanding english. They would be interested in a french translation.

    Describe the solution you'd like Add a language selector.

    Describe alternatives you've considered Google Translate? Really? 😄

    enhancement Next release 
    opened by biou 10
  • [BUG]

    [BUG]

    Contact Details

    [email protected]

    What happened?

    I can’t import my certificate - the camera doesn’t take a picture and when I take a picture normally of the QR code and try to import it it says that no QR code is in the picture…

    What browsers are you seeing the problem on?

    Safari

    Are you browsing using

    an iPhone

    Anything else?

    No response

    bug no-issue-activity 
    opened by janehn 9
  • [BUG] iPhone 6 don't support bigInt

    [BUG] iPhone 6 don't support bigInt

    Describe the bug Using iPhone 6+ on ios12.5 Tried on Safari and Chrome browsers

    To Reproduce Steps to reproduce the behavior:

    1. Go to https://covid19passbook.netlify.app/
    2. Tap on “Start scanning” button
    3. Nothing happens
    4. Tap on “import picture” button
    5. Nothing happens

    In the case of chrome, I checked iOS settings and Chrome has access to Camera and to Photos (read and write)

    Expected behavior After tapping on button, expect to see a camera window open or a gallery of my photos to select.

    Screenshots If applicable, add screenshots to help explain your problem.

    Smartphone (please complete the following information):

    • Device: iPhone6 plus
    • OS: iOS 12.5.3
    • Browser: both chrome & safari have same problem

    Additional context Add any other context about the problem here.

    bug wontfix 
    opened by alanlawlor 9
  • [BUG]

    [BUG]

    Contact Details

    [email protected]

    What happened?

    I tried to upload my covid 19 recovery certificate (Ireland) to Apple Wallet, a pop up comes up saying “Safari cannot download this file”

    What browsers are you seeing the problem on?

    Safari

    Are you browsing using

    an iPhone

    Anything else?

    No response

    bug Next release bug:recovery-certificate-time-issue 
    opened by FOT2021 8
  • [BUG]

    [BUG]

    Contact Details

    [email protected]

    What happened?

    A bug happened! I try to download my file and it says safari cannot download this file.

    What browsers are you seeing the problem on?

    Safari

    Are you browsing using

    an iPhone

    Anything else?

    No response

    bug no-issue-activity 
    opened by robyneverard 8
  • Bump decode-uri-component from 0.2.0 to 0.2.2

    Bump decode-uri-component from 0.2.0 to 0.2.2

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump minimatch from 3.0.4 to 3.1.2

    Bump minimatch from 3.0.4 to 3.1.2

    Bumps minimatch from 3.0.4 to 3.1.2.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • [BUG]

    [BUG]

    Contact Details

    [email protected]

    What happened?

    Trying to add Covid pass to apple wallet and says it can’t be Downloaded

    What browsers are you seeing the problem on?

    Safari

    Are you browsing using

    an iPhone

    Anything else?

    No response

    bug 
    opened by maireconneely 1
  • [BUG]

    [BUG]

    Contact Details

    Charlesstewart0504&gmail.com

    What happened?

    Safari cannot save this file when trying to save certificate to wallet

    What browsers are you seeing the problem on?

    Safari

    Are you browsing using

    an iPhone

    Anything else?

    No response

    bug 
    opened by Chas26 1
  • [BUG]  Safari cannot download this file

    [BUG] Safari cannot download this file

    A bug happened! "Safari cannot download this file." iPhone 12 pro max running 16.0.3 image

    What browsers are you seeing the problem on?

    Safari

    Are you browsing using

    an iPhone

    bug 
    opened by priveanon 3
Releases(2.0)
A web app built with Covid-19-API that displays Covid 19 cases, deaths and recovery per country in the entire World

Covid19 Tracker A web app built with Covid-19-API that displays Covid 19 cases, deaths and recovery per country in the entire World Built With HTML, C

Promise Okechukwu 4 Nov 1, 2022
Website yang memberikan informasi terkait ketersediaan rumah sakit dan tempat tidur rumah sakit untuk pasien covid-19 ataupun non-covid di Indonesia.

Bed Covid RS Indonesia Website yang memberikan informasi terkait ketersediaan rumah sakit dan tempat tidur rumah sakit untuk pasien covid-19 ataupun n

Hendra Agil Syaputra 22 Oct 23, 2022
Worldwide-covid-statistics - covid-19 tracker developed using Reactjs, Axios , chartjs, material icons

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

Akinmegha Temitope Samuel 1 Jan 3, 2022
Covid-19 Tracker is a mobile web application showcasing the covid-19 statistics in Africa.

Covid-19 Tracker is a mobile web application showcasing the covid-19 statistics in Africa. when the user clicks on the countries' cards, they will be rendered to the details page that contains more information about the covid-19 in the selected country. Also, the user can search for a specific country using the search bar.

Nedjwa Bouraiou 7 Sep 6, 2022
Concircle scanner mobile app is application That helps you scan your order and position and to know if there are exact or not. it's cross-platform app.

Concircle scanner mobile app ⭐ Star on GitHub — it motivates Me a lot! Concircle scanner mobile app is application That helps you scan your order and

Aymen Ouerghui 10 May 7, 2022
This is Covid-19 data that shows for each country.You can search your country and know its statistics .

COVID-19 Data TRACKER This is Covid-19 data that shows for each country.You can search your country and know its statistics . Built With HTML, CSS, SC

Samiullah Bhadur 2 Apr 21, 2022
Get updates in Telegram when a vaccination center available in your pin code. We can win Covid 🤝

Cowin Bot Get updates in Telegram when an vaccination center available in your pin code. We can win Covid ?? Commands: /start - Start the Bot /help -

Tuhin Kanti Pal 14 Oct 3, 2022
PWA for making ad hoc room reservations easy in Google Workspace environment.

Get A Room! More images in directory documentation/ui-and-architecture-images! Project structure The project is divided into frontend and backend fold

null 4 Sep 14, 2022
USA Covid-19 Tracker is a mobile-first application built with React and Redux to give precise information about the virus behavior in the United States. Great transitions and user feedback made with plain CSS.

React.js USA Covid-19 Tracker This application allows the public to keep track of the stadistics of the Covid-19 Pandemic in the United Stated. You wi

Rafael Echart 14 Oct 25, 2022
Check EU Digitial Covid Certificates with ease and validate them against country and local rules.

Check EU Digitial Covid Certificates with ease and validate them against local or country rules. What is the purpose of CovidValidator? CovidValidator

Timo Koenig 10 Mar 14, 2022
Built a covid-19 trcaker app using React.js implementing hooks and materail UI

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

Aditya Dond 1 Dec 21, 2021
Web application that tracks the covid-19 statistics in Chile and its regions.

Covid 19 Monitor Web page that shows the covid statistics of the country of Chile, all the confirmed cases, the deaths and also the daily statistics.

David Vergaray 6 Mar 17, 2022
Notices on a digital platform are quick and easy to access, reduce a lot of paper waste, and one can get notified about the updates and news.

DigitalNoticeBoard - Mobile App - (Still In DEV) An Notice Board App for Students To Stay Connected With The College Updates..! Why a college campus n

Badineni Sai Vardhan 6 Nov 24, 2022
⚡️ Look for Covid-19 Resources, Get Vaccine Availability Notification, Complete source code for covidrescue.co.in website.

covidrescue.co.in ⚡️ Get real-time, verified leads on Oxygen, Remdesivir, ICU, Beds, Food and more based on your location. Get notifications on Vaccin

Placeholder Tech 15 Jul 10, 2022
Fill the boring catsalud covid vaccine form with a console command

vacunacovid-catsalud-autofullfill form Fill the boring catsalud covid vaccine form with a console command Manual use, pasting in the script in the con

null 18 Jul 27, 2021
Extract the JSON payload from SHC QR codes (i.e QuĂŠbec Covid Vaccination QR Codes)

shc-extractor Extract the JSON payload from SHC QR Codes (i.e QuĂŠbec COVID Vaccination QR Codes) Introduction Dans les prochains jours/semaines, les q

Olivier Brassard 160 Dec 16, 2022
An application to help in the automatic booking of COVID vaccination slots in India whenever they become available.

Co-WIN automated slot booking Automatically book vaccine slots as and when they become available This application aims to automatically book vaccine s

Arindam Ray 24 Nov 23, 2022
Real-time covid data in Brazil states.

Brazil Covid Data Brazil Covid Data is a web application that allows you to see information about the pandemics on your state just by hovering it on t

Caio Lima 5 Feb 15, 2022
World Covid Tracker With Javascript

World Covid Tracker Track the covid stats in every continent and each of their respective countries. Built with : React Redux-toolkit Tailwind Jest Gi

Shady Shawkat 7 Dec 19, 2022