diff --git a/.circleci/config.yml b/.circleci/config.yml
index 89eedd2b39f798caf20e7f65361d99ecdccf7ae7..9d1d9086d06d96380436366b8c1d3b6c505ab23d 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -7,7 +7,6 @@ main_steps: &main_steps
     - run:
         name: Install dependencies
         command: |
-          npm install --dry-run
           npm ci
         environment:
           # https://docs.cypress.io/guides/getting-started/installing-cypress.html#Skipping-installation
@@ -50,7 +49,6 @@ integration_steps: &integration_steps
     - run:
         name: Install dependencies
         command: |
-          npm install --dry-run
           npm ci
         environment:
           CYPRESS_INSTALL_BINARY: 0
@@ -73,7 +71,6 @@ services_steps: &services_steps
     - run:
         name: Install dependencies
         command: |
-          npm install --dry-run
           npm ci
         environment:
           CYPRESS_INSTALL_BINARY: 0
@@ -116,6 +113,7 @@ package_steps: &package_steps
           MOCHA_FILE: junit/badge-maker/v12/results.xml
           NODE_VERSION: v12
           CYPRESS_INSTALL_BINARY: 0
+          NPM_CONFIG_ENGINE_STRICT: 'false'
         name: Run package tests on Node 12
         command: scripts/run_package_tests.sh
 
@@ -125,6 +123,7 @@ package_steps: &package_steps
           MOCHA_FILE: junit/badge-maker/v14/results.xml
           NODE_VERSION: v14
           CYPRESS_INSTALL_BINARY: 0
+          NPM_CONFIG_ENGINE_STRICT: 'false'
         name: Run package tests on Node 14
         command: scripts/run_package_tests.sh
 
@@ -144,9 +143,6 @@ jobs:
   main:
     docker:
       - image: cimg/node:16.15
-        environment:
-          NPM_CONFIG_ENGINE_STRICT: 'true'
-          NPM_CONFIG_STRICT_PEER_DEPS: 'true'
 
     <<: *main_steps
 
@@ -159,9 +155,6 @@ jobs:
   integration:
     docker:
       - image: cimg/node:16.15
-        environment:
-          NPM_CONFIG_ENGINE_STRICT: 'true'
-          NPM_CONFIG_STRICT_PEER_DEPS: 'true'
       - image: redis
 
     <<: *integration_steps
@@ -196,16 +189,13 @@ jobs:
   frontend:
     docker:
       - image: cimg/node:16.15
-        environment:
-          NPM_CONFIG_ENGINE_STRICT: 'true'
-          NPM_CONFIG_STRICT_PEER_DEPS: 'true'
+
     steps:
       - checkout
 
       - run:
           name: Install dependencies
           command: |
-            npm install --dry-run
             npm ci
           environment:
             CYPRESS_INSTALL_BINARY: 0
@@ -243,9 +233,6 @@ jobs:
   services:
     docker:
       - image: cimg/node:16.15
-        environment:
-          NPM_CONFIG_ENGINE_STRICT: 'true'
-          NPM_CONFIG_STRICT_PEER_DEPS: 'true'
 
     <<: *services_steps
 
@@ -258,9 +245,7 @@ jobs:
   e2e:
     docker:
       - image: cypress/base:16.14.0
-        environment:
-          NPM_CONFIG_ENGINE_STRICT: 'true'
-          NPM_CONFIG_STRICT_PEER_DEPS: 'true'
+
     steps:
       - checkout
 
@@ -272,7 +257,6 @@ jobs:
       - run:
           name: Install dependencies
           command: |
-            npm install --dry-run
             npm ci
 
       - run:
diff --git a/.npmrc b/.npmrc
new file mode 100644
index 0000000000000000000000000000000000000000..7dc0c227e25a18df2474ad83d18b5fcfc9da2b85
--- /dev/null
+++ b/.npmrc
@@ -0,0 +1,2 @@
+engine-strict=true
+strict-peer-deps=true
diff --git a/Dockerfile b/Dockerfile
index 7bbb3d589610c8d396d3991a4fc58fa8e9fd2a41..c63fe69744337a145a64e16f6041a560cc969447 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -9,7 +9,7 @@ COPY package.json package-lock.json /usr/src/app/
 COPY badge-maker /usr/src/app/badge-maker/
 
 RUN apk add python3 make g++
-RUN npm install -g "npm@>=7"
+RUN npm install -g "npm@>=8"
 # We need dev deps to build the front end. We don't need Cypress, though.
 RUN NODE_ENV=development CYPRESS_INSTALL_BINARY=0 npm ci
 
diff --git a/doc/TUTORIAL.md b/doc/TUTORIAL.md
index ab81402c3ea622f962cf67b6da3295277c70f338..900d0740cd7aa63b2959e6e7ac73840d0a7d858c 100644
--- a/doc/TUTORIAL.md
+++ b/doc/TUTORIAL.md
@@ -25,7 +25,7 @@ and learn about the [GitHub workflow](http://try.github.io/).
 
 #### Node, NPM
 
-Node >=16 and NPM >=7 is required. If you don't already have them,
+Node >=16 and NPM >=8 is required. If you don't already have them,
 install node and npm: https://nodejs.org/en/download/
 
 ### Setup a dev install
diff --git a/package.json b/package.json
index 3d58f0ffedb35991d83fb81e2432f67fcbede73a..190b9a2d54128265a85b8df26f9cfb2a9d8cb0fa 100644
--- a/package.json
+++ b/package.json
@@ -241,8 +241,8 @@
     "url": "^0.11.0"
   },
   "engines": {
-    "node": "^16.13.0",
-    "npm": ">=7.0.0"
+    "node": ">=16.13.0",
+    "npm": ">=8.0.0"
   },
   "type": "module",
   "collective": {