diff --git a/ExerciseChecker/package-lock.json b/ExerciseChecker/package-lock.json
index d23a2e213bdbd4d41e61a63691411928a7b7f6ea..bc17bf89d7aa6a08a36c4cd8087e8708930a1366 100644
--- a/ExerciseChecker/package-lock.json
+++ b/ExerciseChecker/package-lock.json
@@ -1,12 +1,13 @@
 {
     "name": "dojo_exercise_checker",
-    "version": "2.1.0",
+    "version": "2.2.0",
     "lockfileVersion": 3,
     "requires": true,
     "packages": {
         "": {
             "name": "dojo_exercise_checker",
-            "version": "2.1.0",
+            "version": "2.2.0",
+            "license": "AGPLv3",
             "dependencies": {
                 "ajv": "^8.12.0",
                 "axios": "^1.4.0",
@@ -31,6 +32,7 @@
                 "@types/node": "^18.17.1",
                 "@types/tar-stream": "^2.2.2",
                 "dotenv-vault": "^1.25.0",
+                "genversion": "^3.1.1",
                 "pkg": "^5.8.1",
                 "tiny-typed-emitter": "^2.1.0",
                 "ts-node": "^10.9.1",
@@ -61,9 +63,9 @@
             }
         },
         "node_modules/@babel/helper-validator-identifier": {
-            "version": "7.22.15",
-            "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.15.tgz",
-            "integrity": "sha512-4E/F9IIEi8WR94324mbDUMo074YTheJmd7eZF5vITTeYchqAi6sYXRLHUVsmkdmY4QjfKTcB2jB7dVP3NaBElQ==",
+            "version": "7.22.20",
+            "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz",
+            "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==",
             "dev": true,
             "engines": {
                 "node": ">=6.9.0"
@@ -299,9 +301,9 @@
             "dev": true
         },
         "node_modules/@oclif/plugin-help": {
-            "version": "5.2.19",
-            "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-5.2.19.tgz",
-            "integrity": "sha512-gf6/dFtzMJ8RA4ovlBCBGJsZsd4jPXhYWJho+Gh6KmA+Ev9LupoExbE0qT+a2uHJyHEvIg4uX/MBW3qdERD/8g==",
+            "version": "5.2.20",
+            "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-5.2.20.tgz",
+            "integrity": "sha512-u+GXX/KAGL9S10LxAwNUaWdzbEBARJ92ogmM7g3gDVud2HioCmvWQCDohNRVZ9GYV9oKwZ/M8xwd6a1d95rEKQ==",
             "dev": true,
             "dependencies": {
                 "@oclif/core": "^2.15.0"
@@ -365,9 +367,9 @@
             }
         },
         "node_modules/@oclif/plugin-not-found": {
-            "version": "2.4.1",
-            "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-2.4.1.tgz",
-            "integrity": "sha512-LqW7qpw5Q8ploRiup2jEIMQJXcxHP1tpwj45GApKQMe7GRdGdRdjBT9Tu+U2tdEgMqgMplAIhOsYCx2nc2nMSw==",
+            "version": "2.4.3",
+            "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-2.4.3.tgz",
+            "integrity": "sha512-nIyaR4y692frwh7wIHZ3fb+2L6XEecQwRDIb4zbEam0TvaVmBQWZoColQyWA84ljFBPZ8XWiQyTz+ixSwdRkqg==",
             "dev": true,
             "dependencies": {
                 "@oclif/core": "^2.15.0",
@@ -433,9 +435,9 @@
             }
         },
         "node_modules/@oclif/plugin-update": {
-            "version": "3.2.3",
-            "resolved": "https://registry.npmjs.org/@oclif/plugin-update/-/plugin-update-3.2.3.tgz",
-            "integrity": "sha512-JVKwp4ysG9GU4RmG59MZYMunz8onRI+wEQzJThyYkUFd0VfZviYt2FHsyoNtxi30l0tInC8APgKp1pCCO4e+FQ==",
+            "version": "3.2.4",
+            "resolved": "https://registry.npmjs.org/@oclif/plugin-update/-/plugin-update-3.2.4.tgz",
+            "integrity": "sha512-41G7NTKND+yTpb8LHlvlMIcNoaEUIIJuEwju9igL+ME/pN/53opeXgFV2IjjeFiexXj50OfesY9OQ6lqOZHw+g==",
             "dev": true,
             "dependencies": {
                 "@oclif/core": "^2.11.8",
@@ -553,9 +555,9 @@
             }
         },
         "node_modules/@oclif/plugin-warn-if-update-available": {
-            "version": "2.1.0",
-            "resolved": "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-2.1.0.tgz",
-            "integrity": "sha512-liTWd/qSIqALsikr88CAB9o2xGFt0LdT5REbhxtrx16/trRmkxQ+0RHK1FieGZAzEENx/4D3YcC/Y67a0uyO0g==",
+            "version": "2.1.1",
+            "resolved": "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-2.1.1.tgz",
+            "integrity": "sha512-y7eSzT6R5bmTIJbiMMXgOlbBpcWXGlVhNeQJBLBCCy1+90Wbjyqf6uvY0i2WcO4sh/THTJ20qCW80j3XUlgDTA==",
             "dev": true,
             "dependencies": {
                 "@oclif/core": "^2.15.0",
@@ -624,9 +626,9 @@
             }
         },
         "node_modules/@oclif/screen": {
-            "version": "3.0.6",
-            "resolved": "https://registry.npmjs.org/@oclif/screen/-/screen-3.0.6.tgz",
-            "integrity": "sha512-nEv7dFPxCrWrvK6dQ8zya0/Kb54EXVcwIKV9capjSa89ZDoOo+qH0YSo4/eQVECXgW3eUvgKLDIcIt62YBk0HA==",
+            "version": "3.0.7",
+            "resolved": "https://registry.npmjs.org/@oclif/screen/-/screen-3.0.7.tgz",
+            "integrity": "sha512-jQBPHcMh5rcIPKdqA6xlzioLOmkaVnjg2MVyjMzBKV8hDhLWNSiZqx7NAWXpP70v2LFvGdVoV8BSbK9iID3eHg==",
             "dev": true,
             "engines": {
                 "node": ">=12.0.0"
@@ -657,18 +659,18 @@
             "dev": true
         },
         "node_modules/@types/cli-progress": {
-            "version": "3.11.2",
-            "resolved": "https://registry.npmjs.org/@types/cli-progress/-/cli-progress-3.11.2.tgz",
-            "integrity": "sha512-Yt/8rEJalfa9ve2SbfQnwFHrc9QF52JIZYHW3FDaTMpkCvnns26ueKiPHDxyJ0CS//IqjMINTx7R5Xa7k7uFHQ==",
+            "version": "3.11.3",
+            "resolved": "https://registry.npmjs.org/@types/cli-progress/-/cli-progress-3.11.3.tgz",
+            "integrity": "sha512-/+C9xAdVtc+g5yHHkGBThgAA8rYpi5B+2ve3wLtybYj0JHEBs57ivR4x/zGfSsplRnV+psE91Nfin1soNKqz5Q==",
             "dev": true,
             "dependencies": {
                 "@types/node": "*"
             }
         },
         "node_modules/@types/docker-modem": {
-            "version": "3.0.3",
-            "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.3.tgz",
-            "integrity": "sha512-i1A2Etnav7uHizZ87vUf4EqwJehY3JOcTfBS0pGBlO+HQ0jg2lUMCaJRg9VQM8ldZkpYdIfsenxcTOCpwxPXEg==",
+            "version": "3.0.4",
+            "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.4.tgz",
+            "integrity": "sha512-INK4TOrJ9hbgaSqHA1HaEOCcYVftJRH0v03gCg6R57JGKgltkDvdFYBtoN4lHrJ3h8aF1upvEPN2eWVLIvKStQ==",
             "dev": true,
             "dependencies": {
                 "@types/node": "*",
@@ -676,9 +678,9 @@
             }
         },
         "node_modules/@types/dockerode": {
-            "version": "3.3.19",
-            "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.19.tgz",
-            "integrity": "sha512-7CC5yIpQi+bHXwDK43b/deYXteP3Lem9gdocVVHJPSRJJLMfbiOchQV3rDmAPkMw+n3GIVj7m1six3JW+VcwwA==",
+            "version": "3.3.20",
+            "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.20.tgz",
+            "integrity": "sha512-Q+1e3z6SPWXR/Sk+WIyJFVsSDg78S7MDaGcwAh1WKlveO1tVO8TF1rOzJir5GLnqzEdUbclFKlw/4rhwESxwPw==",
             "dev": true,
             "dependencies": {
                 "@types/docker-modem": "*",
@@ -686,9 +688,9 @@
             }
         },
         "node_modules/@types/fs-extra": {
-            "version": "11.0.1",
-            "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.1.tgz",
-            "integrity": "sha512-MxObHvNl4A69ofaTRU8DFqvgzzv8s9yRtaPPm5gud9HDNvpB3GPQFvNuTWAI59B9huVGV5jXYJwbCsmBsOGYWA==",
+            "version": "11.0.2",
+            "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.2.tgz",
+            "integrity": "sha512-c0hrgAOVYr21EX8J0jBMXGLMgJqVf/v6yxi0dLaJboW9aQPh16Id+z6w2Tx1hm+piJOLv8xPfVKZCLfjPw/IMQ==",
             "dev": true,
             "dependencies": {
                 "@types/jsonfile": "*",
@@ -696,30 +698,30 @@
             }
         },
         "node_modules/@types/js-yaml": {
-            "version": "4.0.5",
-            "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.5.tgz",
-            "integrity": "sha512-FhpRzf927MNQdRZP0J5DLIdTXhjLYzeUTmLAu69mnVksLH9CJY3IuSeEgbKUki7GQZm0WqDkGzyxju2EZGD2wA==",
+            "version": "4.0.6",
+            "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.6.tgz",
+            "integrity": "sha512-ACTuifTSIIbyksx2HTon3aFtCKWcID7/h3XEmRpDYdMCXxPbl+m9GteOJeaAkiAta/NJaSFuA7ahZ0NkwajDSw==",
             "dev": true
         },
         "node_modules/@types/jsonfile": {
-            "version": "6.1.1",
-            "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.1.tgz",
-            "integrity": "sha512-GSgiRCVeapDN+3pqA35IkQwasaCh/0YFH5dEF6S88iDvEn901DjOeH3/QPY+XYP1DFzDZPvIvfeEgk+7br5png==",
+            "version": "6.1.2",
+            "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.2.tgz",
+            "integrity": "sha512-8t92P+oeW4d/CRQfJaSqEwXujrhH4OEeHRjGU3v1Q8mUS8GPF3yiX26sw4svv6faL2HfBtGTe2xWIoVgN3dy9w==",
             "dev": true,
             "dependencies": {
                 "@types/node": "*"
             }
         },
         "node_modules/@types/node": {
-            "version": "18.17.15",
-            "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.15.tgz",
-            "integrity": "sha512-2yrWpBk32tvV/JAd3HNHWuZn/VDN1P+72hWirHnvsvTGSqbANi+kSeuQR9yAHnbvaBvHDsoTdXV0Fe+iRtHLKA==",
+            "version": "18.18.3",
+            "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.3.tgz",
+            "integrity": "sha512-0OVfGupTl3NBFr8+iXpfZ8NR7jfFO+P1Q+IO/q0wbo02wYkP5gy36phojeYWpLQ6WAMjl+VfmqUk2YbUfp0irA==",
             "dev": true
         },
         "node_modules/@types/ssh2": {
-            "version": "1.11.13",
-            "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.11.13.tgz",
-            "integrity": "sha512-08WbG68HvQ2YVi74n2iSUnYHYpUdFc/s2IsI0BHBdJwaqYJpWlVv9elL0tYShTv60yr0ObdxJR5NrCRiGJ/0CQ==",
+            "version": "1.11.14",
+            "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.11.14.tgz",
+            "integrity": "sha512-O/U38mvV4jVVrdtZz8KpmitkmeD/PUDeDNNueQhm34166dmaqb1iZ3sfarSxBArM2/iX4PZVJY3EOta0Zks9hw==",
             "dev": true,
             "dependencies": {
                 "@types/node": "^18.11.18"
@@ -911,9 +913,9 @@
             }
         },
         "node_modules/axios": {
-            "version": "1.5.0",
-            "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.0.tgz",
-            "integrity": "sha512-D4DdjDo5CY50Qms0qGQTTw6Q44jl7zRwY7bthds06pUGfChBCTcQs+N743eFWGEd6pRTMd6A+I87aWyFV5wiZQ==",
+            "version": "1.5.1",
+            "resolved": "https://registry.npmjs.org/axios/-/axios-1.5.1.tgz",
+            "integrity": "sha512-Q28iYCWzNHjAm+yEAot5QaAMxhMghWLFVf7rRdwhUI+c2jix2DUXjAHXVi+s1ibs3mjPO/cCgbA++3BjD0vP/A==",
             "dependencies": {
                 "follow-redirects": "^1.15.0",
                 "form-data": "^4.0.0",
@@ -1152,9 +1154,9 @@
             }
         },
         "node_modules/cli-spinners": {
-            "version": "2.9.0",
-            "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz",
-            "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==",
+            "version": "2.9.1",
+            "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.1.tgz",
+            "integrity": "sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==",
             "engines": {
                 "node": ">=6"
             },
@@ -1257,6 +1259,15 @@
                 "node": ">= 0.8"
             }
         },
+        "node_modules/commander": {
+            "version": "7.2.0",
+            "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz",
+            "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==",
+            "dev": true,
+            "engines": {
+                "node": ">= 10"
+            }
+        },
         "node_modules/concat-map": {
             "version": "0.0.1",
             "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
@@ -1513,12 +1524,6 @@
                 "is-arrayish": "^0.2.1"
             }
         },
-        "node_modules/error-ex/node_modules/is-arrayish": {
-            "version": "0.2.1",
-            "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-            "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
-            "dev": true
-        },
         "node_modules/escalade": {
             "version": "3.1.1",
             "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
@@ -1709,15 +1714,24 @@
                 "node": ">=8"
             }
         },
+        "node_modules/find-package": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/find-package/-/find-package-1.0.0.tgz",
+            "integrity": "sha512-yVn71XCCaNgxz58ERTl8nA/8YYtIQDY9mHSrgFBfiFtdNNfY0h183Vh8BRkKxD8x9TUw3ec290uJKhDVxqGZBw==",
+            "dev": true,
+            "dependencies": {
+                "parents": "^1.0.1"
+            }
+        },
         "node_modules/fn.name": {
             "version": "1.1.0",
             "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
             "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw=="
         },
         "node_modules/follow-redirects": {
-            "version": "1.15.2",
-            "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
-            "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+            "version": "1.15.3",
+            "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
+            "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
             "funding": [
                 {
                     "type": "individual",
@@ -1804,11 +1818,21 @@
                 "node": ">=14.14"
             }
         },
-        "node_modules/function-bind": {
-            "version": "1.1.1",
-            "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-            "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
-            "dev": true
+        "node_modules/genversion": {
+            "version": "3.1.1",
+            "resolved": "https://registry.npmjs.org/genversion/-/genversion-3.1.1.tgz",
+            "integrity": "sha512-/H861PMsihhjgX2qqhTN8egM11V04imhA+3JRFY3jjPua2Sy1NqaqqQPjSP8rdM9jZoKpFhVj9g3Fs9XPCjBYQ==",
+            "dev": true,
+            "dependencies": {
+                "commander": "^7.2.0",
+                "find-package": "^1.0.0"
+            },
+            "bin": {
+                "genversion": "bin/genversion.js"
+            },
+            "engines": {
+                "node": ">=10.0.0"
+            }
         },
         "node_modules/get-caller-file": {
             "version": "2.0.5",
@@ -1872,13 +1896,10 @@
             "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
         },
         "node_modules/has": {
-            "version": "1.0.3",
-            "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-            "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+            "version": "1.0.4",
+            "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz",
+            "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==",
             "dev": true,
-            "dependencies": {
-                "function-bind": "^1.1.1"
-            },
             "engines": {
                 "node": ">= 0.4.0"
             }
@@ -1909,9 +1930,9 @@
             }
         },
         "node_modules/http-status-codes": {
-            "version": "2.2.0",
-            "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz",
-            "integrity": "sha512-feERVo9iWxvnejp3SEfm/+oNG517npqL2/PIA8ORjyOZjGC7TwCRQsZylciLS64i6pJ0wRYz3rkXLRwbtFa8Ng=="
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.3.0.tgz",
+            "integrity": "sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA=="
         },
         "node_modules/https-proxy-agent": {
             "version": "5.0.1",
@@ -2052,9 +2073,10 @@
             }
         },
         "node_modules/is-arrayish": {
-            "version": "0.3.2",
-            "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
-            "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+            "version": "0.2.1",
+            "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+            "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+            "dev": true
         },
         "node_modules/is-core-module": {
             "version": "2.9.0",
@@ -2614,6 +2636,15 @@
                 "node": ">=8"
             }
         },
+        "node_modules/parents": {
+            "version": "1.0.1",
+            "resolved": "https://registry.npmjs.org/parents/-/parents-1.0.1.tgz",
+            "integrity": "sha512-mXKF3xkoUt5td2DoxpLmtOmZvko9VfFpwRwkKDHSNvgmpLAeBo18YDhcPbBzJq+QLCHMbGOfzia2cX4U+0v9Mg==",
+            "dev": true,
+            "dependencies": {
+                "path-platform": "~0.11.15"
+            }
+        },
         "node_modules/parse-json": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
@@ -2652,6 +2683,15 @@
             "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
             "dev": true
         },
+        "node_modules/path-platform": {
+            "version": "0.11.15",
+            "resolved": "https://registry.npmjs.org/path-platform/-/path-platform-0.11.15.tgz",
+            "integrity": "sha512-Y30dB6rab1A/nfEKsZxmr01nUotHX0c/ZiIAsCTatEe1CmS5Pm5He7fZ195bPT7RdquoaL8lLxFCMQi/bS7IJg==",
+            "dev": true,
+            "engines": {
+                "node": ">= 0.8.0"
+            }
+        },
         "node_modules/path-type": {
             "version": "4.0.0",
             "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
@@ -2926,9 +2966,9 @@
             }
         },
         "node_modules/resolve": {
-            "version": "1.22.4",
-            "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz",
-            "integrity": "sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==",
+            "version": "1.22.6",
+            "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz",
+            "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==",
             "dev": true,
             "dependencies": {
                 "is-core-module": "^2.13.0",
@@ -3143,6 +3183,11 @@
                 "is-arrayish": "^0.3.1"
             }
         },
+        "node_modules/simple-swizzle/node_modules/is-arrayish": {
+            "version": "0.3.2",
+            "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+            "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
+        },
         "node_modules/slash": {
             "version": "3.0.0",
             "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
diff --git a/ExerciseChecker/package.json b/ExerciseChecker/package.json
index 329592384a03d940f152d855dffbc6af02c6a464..dd642ad59ea36467d750324b532b6d596e78a3e9 100644
--- a/ExerciseChecker/package.json
+++ b/ExerciseChecker/package.json
@@ -1,6 +1,9 @@
 {
     "name"           : "dojo_exercise_checker",
+    "description"    : "App that check an exercise of the Dojo project",
     "version"        : "2.2.0",
+    "license"        : "AGPLv3",
+    "author"         : "Michaƫl Minelli <dojo@minelli.me>",
     "main"           : "dist/app.js",
     "bin"            : {
         "dirmanager": "./dist/app.js"
@@ -18,9 +21,11 @@
         ]
     },
     "scripts"        : {
-        "build"    : "npx tsc",
-        "start:dev": "npx ts-node src/app.ts",
-        "test"     : "echo \"Error: no test specified\" && exit 1"
+        "dotenv:build": "npx dotenv-vault local build",
+        "genversion"  : "npx genversion -s -e src/config/Version.ts",
+        "build"       : "npm run genversion; npx tsc",
+        "start:dev"   : "npm run genversion; npx ts-node src/app.ts",
+        "test"        : "echo \"Error: no test specified\" && exit 1"
     },
     "dependencies"   : {
         "ajv"              : "^8.12.0",
@@ -43,6 +48,7 @@
         "@types/node"       : "^18.17.1",
         "@types/tar-stream" : "^2.2.2",
         "dotenv-vault"      : "^1.25.0",
+        "genversion"        : "^3.1.1",
         "pkg"               : "^5.8.1",
         "tiny-typed-emitter": "^2.1.0",
         "ts-node"           : "^10.9.1",