diff --git a/NodeApp/package-lock.json b/NodeApp/package-lock.json
index 5999b0d01d9b607b2eac7157e3993c153a598607..ce33542beff07bfbb227c0ae3bf72e341090ceb3 100644
--- a/NodeApp/package-lock.json
+++ b/NodeApp/package-lock.json
@@ -8,11 +8,13 @@
             "name": "dojo_cli",
             "version": "1.0.0",
             "dependencies": {
+                "ajv": "^8.12.0",
                 "appdata-path": "^1.0.0",
                 "axios": "^1.4.0",
                 "chalk": "^4.1.2",
                 "commander": "^10.0.1",
                 "dotenv": "^16.3.1",
+                "hjson": "^3.2.2",
                 "http-status-codes": "^2.2.0",
                 "inquirer": "^8.2.5",
                 "jsonwebtoken": "^8.5.1",
@@ -23,6 +25,7 @@
                 "dirmanager": "dist/app.js"
             },
             "devDependencies": {
+                "@types/hjson": "^2.4.3",
                 "@types/inquirer": "^8.2.6",
                 "@types/jsonwebtoken": "^8.5.9",
                 "@types/node": "^18.17.1",
@@ -242,6 +245,12 @@
             "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
             "dev": true
         },
+        "node_modules/@types/hjson": {
+            "version": "2.4.3",
+            "resolved": "https://registry.npmjs.org/@types/hjson/-/hjson-2.4.3.tgz",
+            "integrity": "sha512-EDixutNn3FQwa5HdET+Tx0h7TirP2knJa9TB21ySqr8XVqT/VsvvOwnanTLHUOOpNofcUhkRKhOk0Wh4YD9RSA==",
+            "dev": true
+        },
         "node_modules/@types/inquirer": {
             "version": "8.2.6",
             "resolved": "https://registry.npmjs.org/@types/inquirer/-/inquirer-8.2.6.tgz",
@@ -314,6 +323,21 @@
                 "node": ">= 6.0.0"
             }
         },
+        "node_modules/ajv": {
+            "version": "8.12.0",
+            "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
+            "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+            "dependencies": {
+                "fast-deep-equal": "^3.1.1",
+                "json-schema-traverse": "^1.0.0",
+                "require-from-string": "^2.0.2",
+                "uri-js": "^4.2.2"
+            },
+            "funding": {
+                "type": "github",
+                "url": "https://github.com/sponsors/epoberezkin"
+            }
+        },
         "node_modules/ansi-escapes": {
             "version": "4.3.2",
             "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -803,6 +827,11 @@
                 "node": ">=4"
             }
         },
+        "node_modules/fast-deep-equal": {
+            "version": "3.1.3",
+            "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+            "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="
+        },
         "node_modules/fast-glob": {
             "version": "3.3.1",
             "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz",
@@ -1036,6 +1065,14 @@
                 "node": ">=8"
             }
         },
+        "node_modules/hjson": {
+            "version": "3.2.2",
+            "resolved": "https://registry.npmjs.org/hjson/-/hjson-3.2.2.tgz",
+            "integrity": "sha512-MkUeB0cTIlppeSsndgESkfFD21T2nXPRaBStLtf3cAYA2bVEFdXlodZB0TukwZiobPD1Ksax5DK4RTZeaXCI3Q==",
+            "bin": {
+                "hjson": "bin/hjson"
+            }
+        },
         "node_modules/http-status-codes": {
             "version": "2.2.0",
             "resolved": "https://registry.npmjs.org/http-status-codes/-/http-status-codes-2.2.0.tgz",
@@ -1248,6 +1285,11 @@
                 "node": ">=4"
             }
         },
+        "node_modules/json-schema-traverse": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz",
+            "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
+        },
         "node_modules/jsonfile": {
             "version": "6.1.0",
             "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz",
@@ -1774,6 +1816,14 @@
                 "once": "^1.3.1"
             }
         },
+        "node_modules/punycode": {
+            "version": "2.3.0",
+            "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
+            "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+            "engines": {
+                "node": ">=6"
+            }
+        },
         "node_modules/queue-microtask": {
             "version": "1.2.3",
             "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -1831,6 +1881,14 @@
                 "node": ">=0.10.0"
             }
         },
+        "node_modules/require-from-string": {
+            "version": "2.0.2",
+            "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz",
+            "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==",
+            "engines": {
+                "node": ">=0.10.0"
+            }
+        },
         "node_modules/resolve": {
             "version": "1.22.2",
             "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz",
@@ -2316,6 +2374,14 @@
                 "node": ">= 10.0.0"
             }
         },
+        "node_modules/uri-js": {
+            "version": "4.4.1",
+            "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+            "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+            "dependencies": {
+                "punycode": "^2.1.0"
+            }
+        },
         "node_modules/util-deprecate": {
             "version": "1.0.2",
             "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
diff --git a/NodeApp/package.json b/NodeApp/package.json
index a6fd7864c4904bebe4983f8715c184b23fb0647d..979adf467d3cf4cf87d1371deece4fad038750b9 100644
--- a/NodeApp/package.json
+++ b/NodeApp/package.json
@@ -25,11 +25,13 @@
         "test"     : "echo \"Error: no test specified\" && exit 1"
     },
     "dependencies"   : {
+        "ajv"              : "^8.12.0",
         "appdata-path"     : "^1.0.0",
         "axios"            : "^1.4.0",
         "chalk"            : "^4.1.2",
         "commander"        : "^10.0.1",
         "dotenv"           : "^16.3.1",
+        "hjson"            : "^3.2.2",
         "http-status-codes": "^2.2.0",
         "inquirer"         : "^8.2.5",
         "jsonwebtoken"     : "^8.5.1",
@@ -37,6 +39,7 @@
         "winston"          : "^3.10.0"
     },
     "devDependencies": {
+        "@types/hjson"       : "^2.4.3",
         "@types/inquirer"    : "^8.2.6",
         "@types/jsonwebtoken": "^8.5.9",
         "@types/node"        : "^18.17.1",
diff --git a/NodeApp/src/shared b/NodeApp/src/shared
index bfca2c401e4b5ff69b0a515fd9dcab49d36ee212..d9d11aebeaf99aab5434b53f75768c9d668190f7 160000
--- a/NodeApp/src/shared
+++ b/NodeApp/src/shared
@@ -1 +1 @@
-Subproject commit bfca2c401e4b5ff69b0a515fd9dcab49d36ee212
+Subproject commit d9d11aebeaf99aab5434b53f75768c9d668190f7