This repository contains the Android release of the Dutch COVID-19 CoronaCheck project.
- The Android app is located in the repository you are currently viewing.
- The iOS app can be found here
See minvws/nl-covid19-coronacheck-app-coordination for further technical documentation.
The codebase was building two different app products:
CoronaCheck (referred to internally as the Holder app) was the official app of the Netherlands for showing coronavirus entry passes. With this digital tool, you could create a certificate with QR code of your negative test, vaccination, or recovery. This allowed access to certain venues and activities abroad. Or at the border.
CoronaCheck Scanner (referred to internally as the Verifier app) was the official scanner app of the Netherlands for coronavirus entry passes. With this digital tool, you could verify if visitors have a valid certificate of their negative test, vaccination, or recovery. You did this by scanning their QR code. This way, you could safely give access to your venue or activity.
The apps can run on devices that meet the following requirements.
- Operating System: Android API 6.0+
- Internet connection
The app does not work anymore, it just opens informing the user about the current deactivated status, with a link to a website offering the last available information for the corona passes. To check previous features of the app, check out one of the previous releases/tags.
Dependencies management is handled with Gradle's Version Catalog. Find the app's dependencies here
- Bouncy castle crypto apis for validating data signatures.
- certificatetransparency-android: for protection against man-in-the-middle attacks.
- groupie for recyclerview layouts
- koin for dependency injection
- lottie: natively renders vector-based animations.
- moshi for parsing JSON into Kotlin classes
- retrofit: http client
- rootbeer for checking if the device got root
- sqlcipher for encrypting the database
- crashlytics crash reporting for internal testing builds
- spotless for consistent code formatting
- timber for easier logging
- versionCatalogUpdate for keeping up to date the dependencies declared in the version catalog toml file
- versions for detecting dependencies updates
- barista for ui tests assertions
- junit for unit testing
- mockk for mocking kotlin classes in tests
- shot for screenshot testing
- robolectric for testing faster components depended on Android framework classes
- firebase-action for sending builds to firebase for internal testing, setting up credentials via a service account and disabling firebase analytics
CoronaCheck can be built using the holder
module.
Both come in 5 flavours:
- tst (test environment)
- acc (acceptance environment)
- fdroidAcc (acceptance environment for F-Droid builds, not depending in google play services)
- fdroidProd (production environment for F-Droid builds)
- prod (production environment)
Note that test and acceptance environments are accessible only inside VWS trusted networks.
Other project modules used by both apps:
- appconfig remote configuration management
- design common styles and components
- shared common models and utility classes
Finally, there are couple of bash and python scripts:
- Sync the public repo to the private repo used by the internal development team.
The development team used to work on the repository in a private fork (for reasons of compliance with existing processes) and was sharing its work as often as possible.
No development is taking place anymore so contribution is not possible.
Note that all commits were signed using a GPG key.