Cavnas: Implement basic service discovery logic

Change-Id: I71b25076dba94d6491ad4db748b259870991c526
diff --git a/apps/canvas/back/package.json b/apps/canvas/back/package.json
index 4b35d41..5f69e57 100644
--- a/apps/canvas/back/package.json
+++ b/apps/canvas/back/package.json
@@ -6,6 +6,7 @@
   "type": "commonjs",
   "scripts": {
     "build": "tsc",
+    "test": "jest",
     "format": "prettier --write src/**/*.{js,ts,jsx,tsx} --list-different",
     "format-check": "prettier --check src/**/*.{js,ts,jsx,tsx}",
     "lint": "eslint .",
@@ -14,20 +15,33 @@
   "author": "",
   "license": "ISC",
   "dependencies": {
+    "@loancrate/prisma-schema-parser": "^3.0.0",
     "@prisma/client": "^6.6.0",
     "axios": "^1.8.4",
+    "dotenv": "^16.5.0",
+    "dotenv-expand": "^12.0.2",
     "express": "^4.21.1",
+    "shelljs": "^0.10.0",
     "sqlite3": "^5.1.7",
+    "tmp": "^0.2.3",
     "zod": "^3.24.4"
   },
   "devDependencies": {
     "@eslint/js": "^9.13.0",
+    "@jest/globals": "^30.0.0-beta.3",
+    "@types/dotenv": "^6.1.1",
     "@types/express": "^5.0.0",
+    "@types/jest": "^29.5.14",
     "@types/node": "^22.9.1",
+    "@types/shelljs": "^0.8.16",
     "@types/sqlite3": "^3.1.11",
+    "@types/tmp": "^0.2.6",
     "eslint": "^9.13.0",
+    "jest": "^29.7.0",
+    "memfs": "^4.17.2",
     "prettier": "3.5.3",
     "prisma": "^6.6.0",
+    "ts-jest": "^29.3.4",
     "typescript": "^5.8.3",
     "typescript-eslint": "^8.11.0"
   },