Canvas: Generate graph state out of dodo-app config

Restructure code, create shared config lib.

Change-Id: I2cf06d35c486d4557484daf8618a2c215316fa7e
diff --git a/apps/canvas/back/package-lock.json b/apps/canvas/back/package-lock.json
index cd69cf4..03f0e80 100644
--- a/apps/canvas/back/package-lock.json
+++ b/apps/canvas/back/package-lock.json
@@ -12,6 +12,7 @@
         "@loancrate/prisma-schema-parser": "^3.0.0",
         "@prisma/client": "^6.6.0",
         "axios": "^1.8.4",
+        "config": "file:../config",
         "dotenv": "^16.5.0",
         "dotenv-expand": "^12.0.2",
         "express": "^4.21.1",
@@ -40,6 +41,21 @@
         "typescript-eslint": "^8.11.0"
       }
     },
+    "../config": {
+      "version": "1.0.0",
+      "license": "ISC",
+      "dependencies": {
+        "@xyflow/react": "^12.3.3",
+        "uuid": "^11.0.2",
+        "zod": "^3.24.4"
+      },
+      "devDependencies": {
+        "eslint": "^9.13.0",
+        "prettier": "3.5.3",
+        "typescript": "^5.8.3",
+        "typescript-eslint": "^8.11.0"
+      }
+    },
     "node_modules/@ampproject/remapping": {
       "version": "2.3.0",
       "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz",
@@ -4279,6 +4295,10 @@
       "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
       "devOptional": true
     },
+    "node_modules/config": {
+      "resolved": "../config",
+      "link": true
+    },
     "node_modules/console-control-strings": {
       "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",