diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 2c43c2e83bb6e0c1dc91d4d38ede76ed0d6fa2ee..7733c965228bfe348c6e5391afbec1cb487856d6 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,23 +1,31 @@
 default:
   image: node:12
 
-before_script:
-  - npm ci
-
 stages:
-  - source_check
+  - deps
+  - check
   - build
   - test
   - deploy
 
+node_install:
+  stage: deps
+  script:
+    - npm ci --only=prod
+  artifacts:
+    paths:
+      - node_modules
+
 check_format:
-  stage: source_check
+  stage: check
   script:
+    - npm ci
     - npx prettier --ignore-path .gitignore --check "**/*.{html,js,json,md}"
 
 lint:
-  stage: source_check
+  stage: check
   script:
+    - npm ci
     - npx eslint --ignore-path .gitignore "**/*.js"
 
 backend_build:
@@ -26,11 +34,12 @@ backend_build:
     - npm run build
   artifacts:
     paths:
-      - .
+      - public/
 
 backend_test:
   stage: test
   script:
+    - npm ci
     - npm test
 
 deploy: