• Stars
    star
    174
  • Rank 219,104 (Top 5 %)
  • Language
    TypeScript
  • License
    European Union Pu...
  • Created over 4 years ago
  • Updated 5 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The dashboard provides information on the outbreak and prevalence of COVID-19 in The Netherlands

NL Coronavirus Dashboard

The dashboard provides information on the outbreak and prevalence of COVID-19 in The Netherlands. It combines measured and modelled data from various sources to give a broad perspective on the subject.

Contact

If you want to contact the dashboard team, feel free to open an issue for technical questions, bug reports, or security findings. If you have a generic question or remark about the corona policy of the Dutch government, please consult the frequently asked questions or contact page on the dashboard.

Development & Contribution process

The core team works directly from this open-source repository. If you plan to propose changes, we recommend opening an issue beforehand where we can discuss your planned changes. This increases the chance that we might be able to use your contribution (or it avoids doing work if there are reasons why we wouldn't be able to use it).

Packages

The project is set up as a monorepo and therefore the code is organized in multiple packages.

  • app: The main application that contains the front-end part of the dashboard. README
  • cli: Command-line tools for things like data validation.
  • cms: Configurations for the Sanity content management system. README
  • common: Commonly shared code that multiple packages are using, like types and utils.
  • icons: A React icon component library, used by the CMS and by app. README

Getting started (quickly)

You can run these commands to quickly get started. We advise you to read what's happening behind the scenes by reading the app README

$ yarn
$ yarn bootstrap
$ yarn dev

Usage

In this project, we use Yarn instead of NPM, so the documentation assumes you have the yarn executable installed on your system.

If you would like to run the code on your local machine check out the readme documentation of the app and (optionally the) cms packages.

Coding Standards

Without describing in detail all the rules we tend to follow here are some worth noting:

General

  • All filenames are written in kebab-case.

  • We use named exports where possible. They improve typing and help with refactoring.

  • We aim to stop using barrel files (using an index file in a folder to bundle exports for the consuming code). Barrel files require manual maintenance and are therefore prone to neglect if forgotten. Also, imports are auto-generated and collapsable by the IDE thus barrel files give us no advantage.

  • When writing complex components, we like them to have their own folder with sub-folders for logic and components containing code which is only used internally by the component. In the case of logic it can also be a file logic.ts if there is not a lot of business logic. When a component and sub-components share some local types they are often put in a separate types.ts file to avoid circular dependencies.

  • We leverage interfaces to define component property structures rather than types. The name of the interface should follow the name of the component followed by a Props suffix. An example would be as below.

    interface RowProps { ... }
    
    const Row = ({ myProp }: RowProps) => { ... };
  • Booleans are prefixed with is/has/should etc.

  • Data schema properties and locale keys for the CMS are all snake_cased. These could be viewed as external data sources / APIs.

  • Event props follow a pattern of onEventName for the component props API. For handling the event we aim to use a name that describes what the function does as opposed to using handleEventNameSubject. Specifically, if the function is not specifically created to handle an event or if the function doings can comfortably be described in a function name.

  • We prefer to use function expressions over named function declarations. This means const doSomething = () => {} instead of function doSomething(){}.

  • Short functions, especially lambda's, are okay to write on a single line.

  • Short if-statements are okay to put on a single line, especially if it only calls a single command: if (isGoingToHappening()) doSomething();

  • We avoid using boolean && doSomething(); inside the component's JavaScript logic, but do use it inside the component's JSX ({boolean && ( ... )}) to conditionally render (parts of) the component.

  • We avoid unnecessary short-hand variable names like arr for arrays, or i for index, or acc for a reduce accumulator.

  • Completely separate Javascript logic from HTML/JSX. This also means removing maps from the JSX. Additionally, if you have nested maps extract them into components passing the required data to map to the component.

  • We prefer early returns. If statements should be on multiple lines, so no single line if statements.

Styling

  • We write Styled Components using its OOTB tagged template literal functions instead of using an additional layer of the Styled System's css() method. This method improves readability, makes code easier to understand, and sticks to the fundamentals of CSS. This method still allows for usage of Styled System's theme definitions, yet removes a dependency on the actual package.
  • We avoid using magic numbers in code, be it logic, JSX, or styles. Magic numbers are often derived from the theme defined by Styled System and resolve to properties such as spacing and font-sizes, but are unclear on their own. Instead, we import the desired property and refer to the index in that properties array. An example would be padding: 3 (undesired) vs padding: space[3] (desired).

GIT

  • We do not have a hard preference or requirement for using git rebase or git merge. Developers should follow what works best for them, but it should be noted that both methods are allowed and actively used in this project.
  • We do not have a hard preference or requirement for squashing a large number of git commits, but it can be useful to apply this when creating a pull request. This action should be used on an 'as-needed basis': if a pull request grows large due to a large amount of commits, it might improve reviewability when multiple commits are squashed. It should be noted that pull requests are squashed when merged, aside from pull requests to master. This is to keep a clear view of features and fixes that were merged as part of a release.
  • Continuing on the above: we should write a comprehensive commit message when squash merging a pull request. This message should be a (filtered) summary of the commits on the branch.
  • It sometimes happens that features, or more so epics, need to be released as a whole because of dependencies within the different chunks of that feature or epic. In this case, it is wise to create an epic/ branch which serves as a base for the different features to be implemented as part of the epic. Branching strategies for this branch are the same as develop: features (feature/) are branched off of and merged back to the epic/ branch. The epic/ branch, as a whole, is merged into develop once it is ready. If the implementation of an epic spans multiple releases, individual releases should also be merged into the epic/ branch in order to keep it up to date. In other words: it also helps to regularly sync develop with the epic/ branch as to prevent conflicts in the end.
  • We use the following branch names:
    • epic/COR-XXXX-descriptive-name-of-epic-branch for epics
    • feature/COR-XXX-descriptive-name-of-ticket-branch for features
    • bugfix/COR-XXX-descriptive-name-of-ticket-branch for bug fixes
    • hotfix/COR-XXX-descriptive-name-of-ticket-branch for hotfixes
    • task/COR-XXX-descriptive-name-of-ticket-branch for bigger features that are best reviewed in smaller chunks
  • We use commit messages according to: https://www.conventionalcommits.org/en/v1.0.0/
    • feat(optional-scope): commit description example for features
    • fix(optional-scope): commit description example for fixes
    • chore(optional-scope): commit description example for cleanups

Developer Documentation

For developers actively working on the platform we recommend reading the documentation here.

More Repositories

1

nl-covid19-notification-app-design

Design documentatie rondom Covid19 Notificatie App
196
star
2

nl-covid19-notification-app-website

Project website
HTML
173
star
3

nl-covid19-notification-app-android

Android sources for the Dutch Covid19 Notification App
Kotlin
162
star
4

nl-kat-coordination

Repo nl-kat-coordination for minvws
Python
122
star
5

nl-covid19-notification-app-ios

Swift
120
star
6

nl-covid19-notification-app-coordination

CoronaMelder Documentation and Repo Overview
HTML
78
star
7

nl-covid19-notification-app-backend

Server-side code for CoronaMelder.
C#
77
star
8

nl-covid19-coronacheck-app-coordination

CoronaCheck Documentation and Repo Overview
TeX
45
star
9

nl-covid19-coronacheck-app-android

Kotlin
44
star
10

nl-covid19-testvac-qr-core

This is a proof of concept (PoC) for creating a QR code system for proving that one has had a valid vaccination record
Go
40
star
11

nl-covid19-coronacheck-app-ios

Swift
25
star
12

nl-covid19-data-backend-processing

Calculations behind the corona dashboard, which provides information on the outbreak and prevalence of COVID-19 in The Netherlands.
TSQL
17
star
13

nl-covid19-notification-app-community-website

Community website COVID-19 notificatieapp
Nix
16
star
14

nl-covid19-notification-lab-android

Android app for experiments with GAEN and Bluetooth protocols
Kotlin
15
star
15

nl-covid19-coronacheck-provider-docs

C#
13
star
16

nl-covid19-coronacheck-website

B2C website CoronaCheck
Vue
10
star
17

nl-kat-boefjes

Repo nl-kat-boefjes for openkat
Python
9
star
18

nl-covid19-coronacheck-backend-bizrules-signing-service

Signing service for DCC and Domestic Certs
Python
8
star
19

nl-covid19-notification-app-statistics

Collection of statistics related to CoronaMelder
8
star
20

nl-rdo-manon

Manon is een design framework
Svelte
8
star
21

pUZI-php

Proficient UZI pass reader in php.
Shell
8
star
22

nl-covid19-coronacheck-app-dgcg-integration

DGCG Integration code for CoronaCheck.
C#
8
star
23

horsebattery

A password generator inspired by https://xkcd.com/936/
PHP
8
star
24

nl-rdo-woo-web

Source code for the (new) WOO platform used by the Ministry of Health, Welfare and Sport
PHP
8
star
25

nl-eHealth-experimental

Collaboration within the eHealth network of the European Communities; experimental concepts for FHIR records for cross border use (vacinnations in different countries, use record of country A in country B, etc).
8
star
26

nl-covid19-coronacheck-mobile-core

Go
7
star
27

nl-kat-octopoes

Repo nl-kat-octopoes for openkat
Python
7
star
28

nl-covid19-coronacheck-idemix

Go
6
star
29

nl-rdo-zammad-api-export

This can be used to export tickets from Zammad to PDF. Each ticket will have its own PDF file.
PHP
6
star
30

nl-covid19-notification-app-provenance

Dutch Corona App - Provenance and Escrow/verification details of (production) builds
Shell
6
star
31

.github

6
star
32

nl-covid19-coronacheck-app-design

5
star
33

nl-kat-rocky

Repo nl-kat-rocky for openkat
HTML
5
star
34

nl-kat-mula

Repo nl-kat-mula for openkat
Python
4
star
35

nl-covid19-notification-app-iccportal

TypeScript
4
star
36

nl-covid19-notification-lab-ios

iOS app for experiments with GAEN and Bluetooth protocols
Swift
4
star
37

nl-covid19-dbco-app-ios

Swift
4
star
38

nl-kat-bytes

Repo nl-kat-bytes for openkat
Python
4
star
39

nl-covid19-coronacheck-app-coronatestprovider-portal-deprecated

3
star
40

go-uzi-middleware

UZI pass middleware for go
Go
3
star
41

nl-covid19-coronacheck-app-bff

Coronatester - backend for frontend
PHP
3
star
42

nl-covid19-dbco-app-coordination

DBCO Documentation and Repo Overview
Shell
2
star
43

nl-covid19-coronacheck-hcert

Go
2
star
44

laravel-crypto

PHP
2
star
45

nl-covid19-dbco-app-design

2
star
46

nl-rdo-max

Multiple Authentication eXchange (MAX) - OIDC to SAML
Python
2
star
47

nl-covid19-coronacheck-web-pdf-tools

JavaScript
2
star
48

nl-covid19-coronacheck-app-provenance

2
star
49

nl-rdo-app-ios-modules

Repo nl-rdo-app-ios-modules for minvws
Swift
2
star
50

generiekefuncties-toestemming

Samenwerken aan de Generieke Functie Toestemming
2
star
51

generiekefuncties-adressering

Samenwerken aan de Generieke Functie Adressering
2
star
52

nl-covid19-coronacheck-app-coronatestprovider-example

PHP
2
star
53

nl-covid19-coronacheck-signature-demo-deprecated

C#
2
star
54

nl-covid19-dbco-portal-design

2
star
55

pUzi-python

Proficient UZI pass reader in python.
Python
2
star
56

nl-rdo-woo-coordination

WOO Platform Coordination
1
star
57

nl-kat-keiko

Repo nl-kat-keiko for minvws
Python
1
star
58

puzi-auth-bundle

Symfony bundle for UZI authentication
PHP
1
star
59

pUZI-laravel

Laravel bundle for UZI authentication
PHP
1
star
60

libsodium-windows-cli

Libsodium Windows CLI
C#
1
star
61

nl-ggd-patientid-auth-provider

Web portal to allow patient id authentication via OIDC
PHP
1
star
62

nl-rdo-openid-connect-php-laravel

Repo nl-rdo-openid-connect-php-laravel for minvws
PHP
1
star
63

generiekefuncties-lokalisatie

Repo generiekefuncties-lokalisatie for minvws
1
star
64

nl-dodo-prikkenzonderafspraak

Repo nl-dodo-prikkenzonderafspraak for minvws
TypeScript
1
star
65

horsebattery-laravel

horsebattery-laravel
PHP
1
star
66

nl-rdo-git-repository-tools

Repo nl-rdo-git-repository-tools for minvws
Swift
1
star
67

nl-covid19-dienst-testen-api

Repo nl-covid19-dienst-testen-api for minvws
PHP
1
star
68

nl-contact-tracing-odds-and-ends

Various tools and utilities
Shell
1
star
69

nl-covid19-dbco-app-backend

PHP
1
star
70

nl-covid19-coronacheck-authentication-service

OpenID / SAML glue logic for DICTU Toegangs Verlenings Service
HTML
1
star
71

nl-ggd-meldportaal-web-public

Repo nl-ggd-meldportaal-web-public for minvws
PHP
1
star
72

rdo-aptly-manage

Repo rdo-aptly-manage-public for minvws
Python
1
star
73

base45-go

Go
1
star
74

nl-dodo-mijnvraagovercorona-web

Repo nl-dodo-mijnvraagovercorona-web-cleanup for minvws
TypeScript
1
star