diff --git a/ExpressAPI/.idea/jetbrainsConfiguration b/ExpressAPI/.idea/jetbrainsConfiguration
index f572bf3afa0a98675247df85c599b5d1e5a62d0d..ef5c7bd49a57bc28db77bad797de4980133d6523 160000
--- a/ExpressAPI/.idea/jetbrainsConfiguration
+++ b/ExpressAPI/.idea/jetbrainsConfiguration
@@ -1 +1 @@
-Subproject commit f572bf3afa0a98675247df85c599b5d1e5a62d0d
+Subproject commit ef5c7bd49a57bc28db77bad797de4980133d6523
diff --git a/ExpressAPI/nodemon.json b/ExpressAPI/nodemon.json
index 220b7edeec37b336d961c667a7b3ed58ac7aa31d..3b34dc537aa9a8794590c2e8a81adbbfc61a54d4 100644
--- a/ExpressAPI/nodemon.json
+++ b/ExpressAPI/nodemon.json
@@ -9,5 +9,5 @@
     "verbose": true,
     "ext"    : ".ts,.js",
     "ignore" : [],
-    "exec"   : "npm run lint; npm run build:openapi; ts-node --files ./src/app.ts"
+    "exec"   : "npm run lint; npm run build:openapi; tsc --noEmit && npx tsx src/app.ts"
 }
diff --git a/ExpressAPI/package-lock.json b/ExpressAPI/package-lock.json
index d04243833679bb29fc97734ae22f901b227c9a87..f1471fc20b2291036d8bce3fe2578ea422bda97e 100644
--- a/ExpressAPI/package-lock.json
+++ b/ExpressAPI/package-lock.json
@@ -58,8 +58,8 @@
                 "nodemon": "^3.0.3",
                 "npm": "^10.4.0",
                 "prisma": "^5.9.1",
-                "ts-node": "^10.9.2",
-                "typescript": "^5.3.3"
+                "tsx": "^4.7.1",
+                "typescript": "^5.4.3"
             }
         },
         "node_modules/@aashutoshrathi/word-wrap": {
@@ -135,6 +135,374 @@
             "integrity": "sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==",
             "dev": true
         },
+        "node_modules/@esbuild/aix-ppc64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz",
+            "integrity": "sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==",
+            "cpu": [
+                "ppc64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "aix"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/android-arm": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.12.tgz",
+            "integrity": "sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==",
+            "cpu": [
+                "arm"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "android"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/android-arm64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz",
+            "integrity": "sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==",
+            "cpu": [
+                "arm64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "android"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/android-x64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.12.tgz",
+            "integrity": "sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "android"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/darwin-arm64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz",
+            "integrity": "sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==",
+            "cpu": [
+                "arm64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "darwin"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/darwin-x64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz",
+            "integrity": "sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "darwin"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/freebsd-arm64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz",
+            "integrity": "sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==",
+            "cpu": [
+                "arm64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "freebsd"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/freebsd-x64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz",
+            "integrity": "sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "freebsd"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/linux-arm": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz",
+            "integrity": "sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==",
+            "cpu": [
+                "arm"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/linux-arm64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz",
+            "integrity": "sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==",
+            "cpu": [
+                "arm64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/linux-ia32": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz",
+            "integrity": "sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==",
+            "cpu": [
+                "ia32"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/linux-loong64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz",
+            "integrity": "sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==",
+            "cpu": [
+                "loong64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/linux-mips64el": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz",
+            "integrity": "sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==",
+            "cpu": [
+                "mips64el"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/linux-ppc64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz",
+            "integrity": "sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==",
+            "cpu": [
+                "ppc64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/linux-riscv64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz",
+            "integrity": "sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==",
+            "cpu": [
+                "riscv64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/linux-s390x": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz",
+            "integrity": "sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==",
+            "cpu": [
+                "s390x"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/linux-x64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz",
+            "integrity": "sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "linux"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/netbsd-x64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz",
+            "integrity": "sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "netbsd"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/openbsd-x64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz",
+            "integrity": "sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "openbsd"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/sunos-x64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz",
+            "integrity": "sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "sunos"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/win32-arm64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz",
+            "integrity": "sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==",
+            "cpu": [
+                "arm64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "win32"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/win32-ia32": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz",
+            "integrity": "sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==",
+            "cpu": [
+                "ia32"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "win32"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
+        "node_modules/@esbuild/win32-x64": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz",
+            "integrity": "sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==",
+            "cpu": [
+                "x64"
+            ],
+            "dev": true,
+            "optional": true,
+            "os": [
+                "win32"
+            ],
+            "engines": {
+                "node": ">=12"
+            }
+        },
         "node_modules/@eslint-community/eslint-utils": {
             "version": "4.4.0",
             "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
@@ -882,9 +1250,9 @@
             }
         },
         "node_modules/@redocly/config": {
-            "version": "0.1.5",
-            "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.1.5.tgz",
-            "integrity": "sha512-nE7jePALlLDC7hueRy/yWFlTqNv6yrVQnKQVwVepOzuf0PTUYsBWQ2fNxh7Z2L/3PDjTs/Jc2IHmkwAkFyHmnw==",
+            "version": "0.1.6",
+            "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.1.6.tgz",
+            "integrity": "sha512-8vXiTEKAqun98i7LksmhtMUIMl34ePiPchDdsikQLwh3/Hg8J9FyEZujwm5QvYQE2evo78W6x8pcHJtzSmyZgQ==",
             "dev": true
         },
         "node_modules/@redocly/openapi-core": {
@@ -910,9 +1278,9 @@
             }
         },
         "node_modules/@tsconfig/node10": {
-            "version": "1.0.10",
-            "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.10.tgz",
-            "integrity": "sha512-PiaIWIoPvO6qm6t114ropMCagj6YAF24j9OkCA2mJDXFnlionEwhsBCJ8yek4aib575BI3OkART/90WsgHgLWw==",
+            "version": "1.0.11",
+            "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz",
+            "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==",
             "dev": true
         },
         "node_modules/@tsconfig/node12": {
@@ -2549,6 +2917,44 @@
             "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==",
             "dev": true
         },
+        "node_modules/esbuild": {
+            "version": "0.19.12",
+            "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.12.tgz",
+            "integrity": "sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==",
+            "dev": true,
+            "hasInstallScript": true,
+            "bin": {
+                "esbuild": "bin/esbuild"
+            },
+            "engines": {
+                "node": ">=12"
+            },
+            "optionalDependencies": {
+                "@esbuild/aix-ppc64": "0.19.12",
+                "@esbuild/android-arm": "0.19.12",
+                "@esbuild/android-arm64": "0.19.12",
+                "@esbuild/android-x64": "0.19.12",
+                "@esbuild/darwin-arm64": "0.19.12",
+                "@esbuild/darwin-x64": "0.19.12",
+                "@esbuild/freebsd-arm64": "0.19.12",
+                "@esbuild/freebsd-x64": "0.19.12",
+                "@esbuild/linux-arm": "0.19.12",
+                "@esbuild/linux-arm64": "0.19.12",
+                "@esbuild/linux-ia32": "0.19.12",
+                "@esbuild/linux-loong64": "0.19.12",
+                "@esbuild/linux-mips64el": "0.19.12",
+                "@esbuild/linux-ppc64": "0.19.12",
+                "@esbuild/linux-riscv64": "0.19.12",
+                "@esbuild/linux-s390x": "0.19.12",
+                "@esbuild/linux-x64": "0.19.12",
+                "@esbuild/netbsd-x64": "0.19.12",
+                "@esbuild/openbsd-x64": "0.19.12",
+                "@esbuild/sunos-x64": "0.19.12",
+                "@esbuild/win32-arm64": "0.19.12",
+                "@esbuild/win32-ia32": "0.19.12",
+                "@esbuild/win32-x64": "0.19.12"
+            }
+        },
         "node_modules/escalade": {
             "version": "3.1.2",
             "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
@@ -3294,6 +3700,18 @@
             "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==",
             "dev": true
         },
+        "node_modules/get-tsconfig": {
+            "version": "4.7.3",
+            "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.3.tgz",
+            "integrity": "sha512-ZvkrzoUA0PQZM6fy6+/Hce561s+faD1rsNwhnO5FelNjyy7EMGJ3Rz1AQ8GYDWjhRs/7dBLOEJvhK8MiEJOAFg==",
+            "dev": true,
+            "dependencies": {
+                "resolve-pkg-maps": "^1.0.0"
+            },
+            "funding": {
+                "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1"
+            }
+        },
         "node_modules/glob": {
             "version": "7.2.3",
             "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -4555,9 +4973,9 @@
             "dev": true
         },
         "node_modules/node": {
-            "version": "20.11.1",
-            "resolved": "https://registry.npmjs.org/node/-/node-20.11.1.tgz",
-            "integrity": "sha512-Xn8PkfFD6TYj/zqL2iK6ENtpEWvEymEHTycYdZydZNkzdqXwopqQKG+Yz+8xDsAJO15Db7VFNzRPVpYk0cbBJg==",
+            "version": "20.12.0",
+            "resolved": "https://registry.npmjs.org/node/-/node-20.12.0.tgz",
+            "integrity": "sha512-2Mk6hEMKBXh6KdiG1DHqI68EU7fEvF6icNJ0/ormVXTv1SXii3tLaIObhUEmCBv15qob23n0yoFPmB6CEos5/Q==",
             "hasInstallScript": true,
             "dependencies": {
                 "node-bin-setup": "^1.0.0"
@@ -8273,6 +8691,15 @@
                 "node": ">=4"
             }
         },
+        "node_modules/resolve-pkg-maps": {
+            "version": "1.0.0",
+            "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz",
+            "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==",
+            "dev": true,
+            "funding": {
+                "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1"
+            }
+        },
         "node_modules/restore-cursor": {
             "version": "3.1.0",
             "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz",
@@ -8877,9 +9304,9 @@
             }
         },
         "node_modules/swagger-ui-dist": {
-            "version": "5.12.2",
-            "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.12.2.tgz",
-            "integrity": "sha512-Fk8qZCBgZPkDli81pLrkSN15rs49xKnPkjhtKmUImmak4l2HdLiR/R7RgPkMGn1MuXvoIoLjIWgjE7NBgLWZHg=="
+            "version": "5.12.3",
+            "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.12.3.tgz",
+            "integrity": "sha512-UAFxQSzxVkY/yfmipeMLj4LwH6I/ZGcfezwSquPm2U9CqOiHp8L6fD7TcyPDYfCZuHFaPw5y4io+fny37Ov9NQ=="
         },
         "node_modules/swagger-ui-express": {
             "version": "5.0.0",
@@ -9110,6 +9537,25 @@
             "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==",
             "dev": true
         },
+        "node_modules/tsx": {
+            "version": "4.7.1",
+            "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.7.1.tgz",
+            "integrity": "sha512-8d6VuibXHtlN5E3zFkgY8u4DX7Y3Z27zvvPKVmLon/D4AjuKzarkUBTLDBgj9iTQ0hg5xM7c/mYiRVM+HETf0g==",
+            "dev": true,
+            "dependencies": {
+                "esbuild": "~0.19.10",
+                "get-tsconfig": "^4.7.2"
+            },
+            "bin": {
+                "tsx": "dist/cli.mjs"
+            },
+            "engines": {
+                "node": ">=18.0.0"
+            },
+            "optionalDependencies": {
+                "fsevents": "~2.3.3"
+            }
+        },
         "node_modules/tunnel-agent": {
             "version": "0.6.0",
             "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
diff --git a/ExpressAPI/package.json b/ExpressAPI/package.json
index 6ecabeb7a5e6c3168b7542c374cffed009208c56..5756151d8890e58f3fccdbfc538d6550b19c9274 100644
--- a/ExpressAPI/package.json
+++ b/ExpressAPI/package.json
@@ -77,7 +77,7 @@
         "nodemon"                         : "^3.0.3",
         "npm"                             : "^10.4.0",
         "prisma"                          : "^5.9.1",
-        "ts-node"                         : "^10.9.2",
-        "typescript"                      : "^5.3.3"
+        "tsx"                             : "^4.7.1",
+        "typescript"                      : "^5.4.3"
     }
 }
diff --git a/ExpressAPI/prisma/seed.ts b/ExpressAPI/prisma/seed.ts
index 74d814d9f269ff4ca5c3651ab743f979799758f5..93680f6e393563ebb3adee65bdfe48e5918797a0 100644
--- a/ExpressAPI/prisma/seed.ts
+++ b/ExpressAPI/prisma/seed.ts
@@ -1,10 +1,11 @@
-require('../src/InitialImports'); // ATTENTION : These lines MUST be the first of this file
+// ATTENTION : This line MUST be the first of this file
+import '../src/init.js';
 
 import * as process from 'process';
-import SharedConfig from '../src/shared/config/SharedConfig';
+import SharedConfig from '../src/shared/config/SharedConfig.js';
 import { UserRole } from '@prisma/client';
-import logger       from '../src/shared/logging/WinstonLogger';
-import db           from '../src/helpers/DatabaseHelper';
+import logger       from '../src/shared/logging/WinstonLogger.js';
+import db           from '../src/helpers/DatabaseHelper.js';
 
 
 async function main() {
diff --git a/ExpressAPI/src/InitialImports.ts b/ExpressAPI/src/InitialImports.ts
deleted file mode 100644
index 98e4273b1c3a1b46b6ef444a71a72bf8ae12fa6a..0000000000000000000000000000000000000000
--- a/ExpressAPI/src/InitialImports.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import path    from 'node:path';
-import cluster from 'node:cluster';
-import myEnv = require('dotenv');
-import dotenvExpand = require('dotenv-expand');
-
-
-if ( cluster.isPrimary ) {
-    if ( process.env.NODE_ENV && process.env.NODE_ENV === 'production' ) {
-        dotenvExpand.expand(myEnv.config());
-    } else {
-        myEnv.config({ path: path.join(__dirname, '../.env.keys') });
-        dotenvExpand.expand(myEnv.config({ DOTENV_KEY: process.env.DOTENV_KEY_DEVELOPMENT }));
-    }
-}
-
-
-require('./shared/helpers/TypeScriptExtensions'); // ATTENTION : This line MUST be after the dotenv.config() calls
diff --git a/ExpressAPI/src/app.ts b/ExpressAPI/src/app.ts
index b1eb7d2dd46eb1f8d64c9c61ccd4805cb6be4d58..cf216ab0dd27362921c0b98a0280f147a9271022 100644
--- a/ExpressAPI/src/app.ts
+++ b/ExpressAPI/src/app.ts
@@ -1,10 +1,11 @@
-require('./InitialImports'); // ATTENTION : These lines MUST be the first of this file
+// ATTENTION : This line MUST be the first of this file
+import './init.js';
 
-import SharedConfig   from './shared/config/SharedConfig';
-import WorkerRole     from './process/WorkerRole';
-import ClusterManager from './process/ClusterManager';
-import API            from './express/API';
-import HttpManager    from './managers/HttpManager';
+import SharedConfig   from './shared/config/SharedConfig.js';
+import WorkerRole     from './process/WorkerRole.js';
+import ClusterManager from './process/ClusterManager.js';
+import API            from './express/API.js';
+import HttpManager    from './managers/HttpManager.js';
 
 
 HttpManager.registerAxiosInterceptor();
diff --git a/ExpressAPI/src/config/Config.ts b/ExpressAPI/src/config/Config.ts
index 2eaa5ec692b2c84a82c917564ac27634c3433639..9d5766cae888d80ac7d705cece888ea8124170d4 100644
--- a/ExpressAPI/src/config/Config.ts
+++ b/ExpressAPI/src/config/Config.ts
@@ -1,8 +1,8 @@
 import path             from 'path';
 import fs               from 'fs';
-import { Exercise }     from '../types/DatabaseTypes';
+import { Exercise }     from '../types/DatabaseTypes.js';
 import JSON5            from 'json5';
-import GitlabVisibility from '../shared/types/Gitlab/GitlabVisibility';
+import GitlabVisibility from '../shared/types/Gitlab/GitlabVisibility.js';
 
 
 type ConfigGitlabBadge = {
diff --git a/ExpressAPI/src/controllers/Session.ts b/ExpressAPI/src/controllers/Session.ts
index d264c7aa4a86ffdeea59c8f9cf55a82d7e049022..3c3bae24d0d118a5e51ccddaa4ec9999ebd36576 100644
--- a/ExpressAPI/src/controllers/Session.ts
+++ b/ExpressAPI/src/controllers/Session.ts
@@ -1,11 +1,11 @@
 import { getReasonPhrase, StatusCodes } from 'http-status-codes';
 import * as jwt                         from 'jsonwebtoken';
 import { JwtPayload }                   from 'jsonwebtoken';
-import Config                           from '../config/Config';
+import Config                           from '../config/Config.js';
 import express                          from 'express';
-import UserManager                      from '../managers/UserManager';
-import { User }                         from '../types/DatabaseTypes';
-import DojoBackendResponse              from '../shared/types/Dojo/DojoBackendResponse';
+import UserManager                      from '../managers/UserManager.js';
+import { User }                         from '../types/DatabaseTypes.js';
+import DojoBackendResponse              from '../shared/types/Dojo/DojoBackendResponse.js';
 
 
 class Session {
diff --git a/ExpressAPI/src/express/API.ts b/ExpressAPI/src/express/API.ts
index 519918ef7da595f36394abd87f6d58c2aa6ea273..4245d9212b7cf423b3b27ff3c43352654d285184 100644
--- a/ExpressAPI/src/express/API.ts
+++ b/ExpressAPI/src/express/API.ts
@@ -1,22 +1,22 @@
 import { Express }                    from 'express-serve-static-core';
 import cors                           from 'cors';
-import morganMiddleware               from '../logging/MorganMiddleware';
+import morganMiddleware               from '../logging/MorganMiddleware.js';
 import { AddressInfo }                from 'net';
 import http                           from 'http';
 import helmet                         from 'helmet';
 import express                        from 'express';
-import WorkerTask                     from '../process/WorkerTask';
+import WorkerTask                     from '../process/WorkerTask.js';
 import multer                         from 'multer';
-import SessionMiddleware              from '../middlewares/SessionMiddleware';
-import Config                         from '../config/Config';
-import logger                         from '../shared/logging/WinstonLogger';
-import ParamsCallbackManager          from '../middlewares/ParamsCallbackManager';
-import ApiRoutesManager               from '../routes/ApiRoutesManager';
+import SessionMiddleware              from '../middlewares/SessionMiddleware.js';
+import Config                         from '../config/Config.js';
+import logger                         from '../shared/logging/WinstonLogger.js';
+import ParamsCallbackManager          from '../middlewares/ParamsCallbackManager.js';
+import ApiRoutesManager               from '../routes/ApiRoutesManager.js';
 import compression                    from 'compression';
-import ClientVersionCheckerMiddleware from '../middlewares/ClientVersionCheckerMiddleware';
+import ClientVersionCheckerMiddleware from '../middlewares/ClientVersionCheckerMiddleware.js';
 import swaggerUi                      from 'swagger-ui-express';
 import path                           from 'path';
-import DojoCliVersionHelper           from '../helpers/DojoCliVersionHelper';
+import DojoCliVersionHelper           from '../helpers/DojoCliVersionHelper.js';
 
 
 class API implements WorkerTask {
diff --git a/ExpressAPI/src/helpers/DatabaseHelper.ts b/ExpressAPI/src/helpers/DatabaseHelper.ts
index 797615fea9171ed184be24a024416fd139a17f3b..21fbff411d83c21ae7d1a89e058ca3f4f1722d04 100644
--- a/ExpressAPI/src/helpers/DatabaseHelper.ts
+++ b/ExpressAPI/src/helpers/DatabaseHelper.ts
@@ -1,9 +1,9 @@
 import { PrismaClient }          from '@prisma/client';
-import logger                    from '../shared/logging/WinstonLogger';
-import UserQueryExtension        from './Prisma/Extensions/UserQueryExtension';
-import UserResultExtension       from './Prisma/Extensions/UserResultExtension';
-import AssignmentResultExtension from './Prisma/Extensions/AssignmentResultExtension';
-import ExerciseResultExtension   from './Prisma/Extensions/ExerciseResultExtension';
+import logger                    from '../shared/logging/WinstonLogger.js';
+import UserQueryExtension        from './Prisma/Extensions/UserQueryExtension.js';
+import UserResultExtension       from './Prisma/Extensions/UserResultExtension.js';
+import AssignmentResultExtension from './Prisma/Extensions/AssignmentResultExtension.js';
+import ExerciseResultExtension   from './Prisma/Extensions/ExerciseResultExtension.js';
 
 
 const prisma = new PrismaClient({
diff --git a/ExpressAPI/src/helpers/DojoCliVersionHelper.ts b/ExpressAPI/src/helpers/DojoCliVersionHelper.ts
index 4fd8d2505f55d38cd7f0925c94a6b23eb154d9aa..3ee9982d516f224b9b65c568807627bf77a4a96b 100644
--- a/ExpressAPI/src/helpers/DojoCliVersionHelper.ts
+++ b/ExpressAPI/src/helpers/DojoCliVersionHelper.ts
@@ -1,5 +1,5 @@
-import Config        from '../config/Config';
-import GitlabManager from '../managers/GitlabManager';
+import Config        from '../config/Config.js';
+import GitlabManager from '../managers/GitlabManager.js';
 import * as Gitlab   from '@gitbeaker/rest';
 
 
diff --git a/ExpressAPI/src/helpers/DojoModelsHelper.ts b/ExpressAPI/src/helpers/DojoModelsHelper.ts
index 3b3c35cd4e9197fdd9bb722095e9c73fd409b879..a54c2ac6e218910bb0c1bbd31271bfa9a779c7fa 100644
--- a/ExpressAPI/src/helpers/DojoModelsHelper.ts
+++ b/ExpressAPI/src/helpers/DojoModelsHelper.ts
@@ -1,4 +1,4 @@
-import LazyVal from '../shared/helpers/LazyVal';
+import LazyVal from '../shared/helpers/LazyVal.js';
 
 
 class DojoModelsHelper {
diff --git a/ExpressAPI/src/helpers/DojoValidators.ts b/ExpressAPI/src/helpers/DojoValidators.ts
index 26f60f4ce97d986c2ba2867ad268d79a43ce34c6..cef01a07a39f009cbd2e8e092e9c79d6bb506fb6 100644
--- a/ExpressAPI/src/helpers/DojoValidators.ts
+++ b/ExpressAPI/src/helpers/DojoValidators.ts
@@ -1,13 +1,13 @@
-import Config                                                       from '../config/Config';
+import Config                                                       from '../config/Config.js';
 import { CustomValidator, ErrorMessage, FieldMessageFactory, Meta } from 'express-validator/src/base';
 import { BailOptions, ValidationChain }                             from 'express-validator/src/chain';
-import GitlabManager                                                from '../managers/GitlabManager';
+import GitlabManager                                                from '../managers/GitlabManager.js';
 import express                                                      from 'express';
-import logger                                                       from '../shared/logging/WinstonLogger';
-import Json5FileValidator                                           from '../shared/helpers/Json5FileValidator';
-import ExerciseResultsFile                                          from '../shared/types/Dojo/ExerciseResultsFile';
-import ParamsCallbackManager                                        from '../middlewares/ParamsCallbackManager';
-import ExerciseManager                                              from '../managers/ExerciseManager';
+import logger                                                       from '../shared/logging/WinstonLogger.js';
+import Json5FileValidator                                           from '../shared/helpers/Json5FileValidator.js';
+import ExerciseResultsFile                                          from '../shared/types/Dojo/ExerciseResultsFile.js';
+import ParamsCallbackManager                                        from '../middlewares/ParamsCallbackManager.js';
+import ExerciseManager                                              from '../managers/ExerciseManager.js';
 
 
 declare type DojoMeta = Meta & {
diff --git a/ExpressAPI/src/helpers/GlobalHelper.ts b/ExpressAPI/src/helpers/GlobalHelper.ts
index 6bd7b8890dd7b08c7f3188ac5fc0100d0da57dcc..308a941632f9fa6ddcdaee888538f97b2e4a9bc4 100644
--- a/ExpressAPI/src/helpers/GlobalHelper.ts
+++ b/ExpressAPI/src/helpers/GlobalHelper.ts
@@ -1,7 +1,7 @@
 import express                   from 'express';
-import logger                    from '../shared/logging/WinstonLogger';
-import GitlabManager             from '../managers/GitlabManager';
-import DojoStatusCode            from '../shared/types/Dojo/DojoStatusCode';
+import logger                    from '../shared/logging/WinstonLogger.js';
+import GitlabManager             from '../managers/GitlabManager.js';
+import DojoStatusCode            from '../shared/types/Dojo/DojoStatusCode.js';
 import { StatusCodes }           from 'http-status-codes';
 import { GitbeakerRequestError } from '@gitbeaker/requester-utils';
 import * as Gitlab               from '@gitbeaker/rest';
diff --git a/ExpressAPI/src/helpers/Prisma/Extensions/AssignmentResultExtension.ts b/ExpressAPI/src/helpers/Prisma/Extensions/AssignmentResultExtension.ts
index 4c1d8bea9160b8497ce33b05372595e8c15a2cae..41919c8bed823c362208784142904bea7ddd8720 100644
--- a/ExpressAPI/src/helpers/Prisma/Extensions/AssignmentResultExtension.ts
+++ b/ExpressAPI/src/helpers/Prisma/Extensions/AssignmentResultExtension.ts
@@ -1,7 +1,7 @@
 import { Prisma }   from '@prisma/client';
-import { Exercise } from '../../../types/DatabaseTypes';
-import db           from '../../DatabaseHelper';
-import LazyVal      from '../../../shared/helpers/LazyVal';
+import { Exercise } from '../../../types/DatabaseTypes.js';
+import db           from '../../DatabaseHelper.js';
+import LazyVal      from '../../../shared/helpers/LazyVal.js';
 
 
 async function getCorrections(assignment: { name: string }): Promise<Array<Partial<Exercise>> | undefined> {
diff --git a/ExpressAPI/src/helpers/Prisma/Extensions/UserResultExtension.ts b/ExpressAPI/src/helpers/Prisma/Extensions/UserResultExtension.ts
index af63f05ed484cf5de6bd45421f484627a6845e63..434ff40da0a0037ded772f47e71acb8f077b0e20 100644
--- a/ExpressAPI/src/helpers/Prisma/Extensions/UserResultExtension.ts
+++ b/ExpressAPI/src/helpers/Prisma/Extensions/UserResultExtension.ts
@@ -1,7 +1,7 @@
 import { Prisma, UserRole } from '@prisma/client';
-import LazyVal              from '../../../shared/helpers/LazyVal';
+import LazyVal              from '../../../shared/helpers/LazyVal.js';
 import * as Gitlab          from '@gitbeaker/rest';
-import GitlabManager        from '../../../managers/GitlabManager';
+import GitlabManager        from '../../../managers/GitlabManager.js';
 
 
 export default Prisma.defineExtension(client => {
diff --git a/ExpressAPI/src/init.ts b/ExpressAPI/src/init.ts
new file mode 100644
index 0000000000000000000000000000000000000000..59695b2570077508b4ea44ffb4d9c45222cf7a34
--- /dev/null
+++ b/ExpressAPI/src/init.ts
@@ -0,0 +1,15 @@
+import path         from 'node:path';
+import cluster      from 'node:cluster';
+import dotenv       from 'dotenv';
+import dotenvExpand from 'dotenv-expand';
+import './shared/helpers/TypeScriptExtensions.js';
+
+
+if ( cluster.isPrimary ) {
+    if ( process.env.NODE_ENV && process.env.NODE_ENV === 'production' ) {
+        dotenvExpand.expand(dotenv.config());
+    } else {
+        dotenv.config({ path: path.join(__dirname, '../.env.keys') });
+        dotenvExpand.expand(dotenv.config({ DOTENV_KEY: process.env.DOTENV_KEY_DEVELOPMENT }));
+    }
+}
diff --git a/ExpressAPI/src/logging/MorganMiddleware.ts b/ExpressAPI/src/logging/MorganMiddleware.ts
index 6da9b45547361bcea4bda0007ab7f7b1b0b95b1f..a23c0d5d9925bde5c7e4f352923871f2204181bb 100644
--- a/ExpressAPI/src/logging/MorganMiddleware.ts
+++ b/ExpressAPI/src/logging/MorganMiddleware.ts
@@ -1,5 +1,5 @@
 import morgan, { StreamOptions } from 'morgan';
-import logger                    from '../shared/logging/WinstonLogger';
+import logger                    from '../shared/logging/WinstonLogger.js';
 
 
 const stream: StreamOptions = {
diff --git a/ExpressAPI/src/managers/AssignmentManager.ts b/ExpressAPI/src/managers/AssignmentManager.ts
index 9053b8e5ef05469e31c55be50476d98bbb70308d..7a42824e2bb3c51f3585e757474d980599919e48 100644
--- a/ExpressAPI/src/managers/AssignmentManager.ts
+++ b/ExpressAPI/src/managers/AssignmentManager.ts
@@ -1,6 +1,6 @@
 import { Prisma }           from '@prisma/client';
-import { Assignment, User } from '../types/DatabaseTypes';
-import db                   from '../helpers/DatabaseHelper';
+import { Assignment, User } from '../types/DatabaseTypes.js';
+import db                   from '../helpers/DatabaseHelper.js';
 
 
 class AssignmentManager {
diff --git a/ExpressAPI/src/managers/ExerciseManager.ts b/ExpressAPI/src/managers/ExerciseManager.ts
index 802035222e6a7d52931d2e6ab33e0e9f6360d3a5..258f96379bfe4528e8b59fed8f7be3e78097aeea 100644
--- a/ExpressAPI/src/managers/ExerciseManager.ts
+++ b/ExpressAPI/src/managers/ExerciseManager.ts
@@ -1,6 +1,6 @@
 import { Prisma }   from '@prisma/client';
-import { Exercise } from '../types/DatabaseTypes';
-import db           from '../helpers/DatabaseHelper';
+import { Exercise } from '../types/DatabaseTypes.js';
+import db           from '../helpers/DatabaseHelper.js';
 
 
 class ExerciseManager {
diff --git a/ExpressAPI/src/managers/GitlabManager.ts b/ExpressAPI/src/managers/GitlabManager.ts
index f48e9391cad444bf03d0660a3392ef1b08be9f5b..557118540ff3d04539ddcfbfca49475bd8b509ca 100644
--- a/ExpressAPI/src/managers/GitlabManager.ts
+++ b/ExpressAPI/src/managers/GitlabManager.ts
@@ -1,13 +1,13 @@
-import Config                                                                                                                                                                                 from '../config/Config';
+import Config                                                                                                                                                                                 from '../config/Config.js';
 import { StatusCodes }                                                                                                                                                                        from 'http-status-codes';
-import GitlabVisibility                                                                                                                                                                       from '../shared/types/Gitlab/GitlabVisibility';
+import GitlabVisibility                                                                                                                                                                       from '../shared/types/Gitlab/GitlabVisibility.js';
 import express                                                                                                                                                                                from 'express';
-import SharedConfig                                                                                                                                                                           from '../shared/config/SharedConfig';
+import SharedConfig                                                                                                                                                                           from '../shared/config/SharedConfig.js';
 import { CommitSchema, ExpandedUserSchema, Gitlab, MemberSchema, ProjectBadgeSchema, ProjectSchema, ReleaseSchema, RepositoryFileExpandedSchema, RepositoryFileSchema, RepositoryTreeSchema } from '@gitbeaker/rest';
-import logger                                                                                                                                                                                 from '../shared/logging/WinstonLogger';
+import logger                                                                                                                                                                                 from '../shared/logging/WinstonLogger.js';
 import { AccessLevel, EditProjectOptions, ProjectVariableSchema, ProtectedBranchAccessLevel, ProtectedBranchSchema }                                                                          from '@gitbeaker/core';
-import DojoStatusCode                                                                                                                                                                         from '../shared/types/Dojo/DojoStatusCode';
-import SharedGitlabManager                                                                                                                                                                    from '../shared/managers/SharedGitlabManager';
+import DojoStatusCode                                                                                                                                                                         from '../shared/types/Dojo/DojoStatusCode.js';
+import SharedGitlabManager                                                                                                                                                                    from '../shared/managers/SharedGitlabManager.js';
 
 
 class GitlabManager extends SharedGitlabManager {
diff --git a/ExpressAPI/src/managers/HttpManager.ts b/ExpressAPI/src/managers/HttpManager.ts
index 408adc592d9119e511e1eff457cfde149937c68f..0d9b7d2cd09841c0d1d5f83cedbba8093f8fb7e6 100644
--- a/ExpressAPI/src/managers/HttpManager.ts
+++ b/ExpressAPI/src/managers/HttpManager.ts
@@ -1,6 +1,6 @@
 import axios, { AxiosError, AxiosRequestHeaders } from 'axios';
 import FormData                                   from 'form-data';
-import logger                                     from '../shared/logging/WinstonLogger';
+import logger                                     from '../shared/logging/WinstonLogger.js';
 
 
 class HttpManager {
diff --git a/ExpressAPI/src/managers/UserManager.ts b/ExpressAPI/src/managers/UserManager.ts
index 6008cf5d7d301e02fbd83919f076d29193cf5bac..871ea380c53163bc518f752c0373d97a02ef6374 100644
--- a/ExpressAPI/src/managers/UserManager.ts
+++ b/ExpressAPI/src/managers/UserManager.ts
@@ -1,6 +1,6 @@
 import { Prisma }  from '@prisma/client';
-import db          from '../helpers/DatabaseHelper';
-import { User }    from '../types/DatabaseTypes';
+import db          from '../helpers/DatabaseHelper.js';
+import { User }    from '../types/DatabaseTypes.js';
 import * as Gitlab from '@gitbeaker/rest';
 
 
diff --git a/ExpressAPI/src/middlewares/ClientVersionCheckerMiddleware.ts b/ExpressAPI/src/middlewares/ClientVersionCheckerMiddleware.ts
index f58b2b761a13d06482652eab64594234ac906f92..d4d1cba3fc9cffba1fcf4a254c5880a74353897e 100644
--- a/ExpressAPI/src/middlewares/ClientVersionCheckerMiddleware.ts
+++ b/ExpressAPI/src/middlewares/ClientVersionCheckerMiddleware.ts
@@ -1,8 +1,8 @@
 import express         from 'express';
-import Config          from '../config/Config';
+import Config          from '../config/Config.js';
 import semver          from 'semver/preload';
-import Session         from '../controllers/Session';
-import DojoStatusCode  from '../shared/types/Dojo/DojoStatusCode';
+import Session         from '../controllers/Session.js';
+import DojoStatusCode  from '../shared/types/Dojo/DojoStatusCode.js';
 import { StatusCodes } from 'http-status-codes';
 
 
diff --git a/ExpressAPI/src/middlewares/ParamsCallbackManager.ts b/ExpressAPI/src/middlewares/ParamsCallbackManager.ts
index 6dd5303a36e38091833b733472c0227733788ebe..a1836d10d7349c935920061299226a7eb825568c 100644
--- a/ExpressAPI/src/middlewares/ParamsCallbackManager.ts
+++ b/ExpressAPI/src/middlewares/ParamsCallbackManager.ts
@@ -1,8 +1,8 @@
 import { Express }       from 'express-serve-static-core';
 import express           from 'express';
 import { StatusCodes }   from 'http-status-codes';
-import ExerciseManager   from '../managers/ExerciseManager';
-import AssignmentManager from '../managers/AssignmentManager';
+import ExerciseManager   from '../managers/ExerciseManager.js';
+import AssignmentManager from '../managers/AssignmentManager.js';
 
 
 type GetFunction = (id: string | number, ...args: Array<unknown>) => Promise<unknown>
diff --git a/ExpressAPI/src/middlewares/SecurityMiddleware.ts b/ExpressAPI/src/middlewares/SecurityMiddleware.ts
index a3a505902c4ef17af352f5023e3198fd1bbdf506..cffbfae62b44ccb7fa8ddeaae6bfa58211f1a6e0 100644
--- a/ExpressAPI/src/middlewares/SecurityMiddleware.ts
+++ b/ExpressAPI/src/middlewares/SecurityMiddleware.ts
@@ -1,8 +1,8 @@
 import express           from 'express';
 import { StatusCodes }   from 'http-status-codes';
-import SecurityCheckType from '../types/SecurityCheckType';
-import logger            from '../shared/logging/WinstonLogger';
-import AssignmentManager from '../managers/AssignmentManager';
+import SecurityCheckType from '../types/SecurityCheckType.js';
+import logger            from '../shared/logging/WinstonLogger.js';
+import AssignmentManager from '../managers/AssignmentManager.js';
 
 
 class SecurityMiddleware {
diff --git a/ExpressAPI/src/middlewares/SessionMiddleware.ts b/ExpressAPI/src/middlewares/SessionMiddleware.ts
index bf237bfd28d71562e22b68b2317b447abff88c28..0fb52098a320e20ba9630ea428be57c1023c2f7d 100644
--- a/ExpressAPI/src/middlewares/SessionMiddleware.ts
+++ b/ExpressAPI/src/middlewares/SessionMiddleware.ts
@@ -1,5 +1,5 @@
 import express     from 'express';
-import Session     from '../controllers/Session';
+import Session     from '../controllers/Session.js';
 import { Express } from 'express-serve-static-core';
 
 
diff --git a/ExpressAPI/src/process/ClusterManager.ts b/ExpressAPI/src/process/ClusterManager.ts
index fd061eb701901b88329da2fc94f3a2824ec62f92..8607287fa0d312506a6b604bd3057bb7a9dc6916 100644
--- a/ExpressAPI/src/process/ClusterManager.ts
+++ b/ExpressAPI/src/process/ClusterManager.ts
@@ -1,9 +1,9 @@
 import cluster, { Worker } from 'node:cluster';
-import WorkerRole          from './WorkerRole';
+import WorkerRole          from './WorkerRole.js';
 import os                  from 'os';
-import ClusterStrategy     from './ClusterStrategy';
-import WorkerPool          from './WorkerPool';
-import logger              from '../shared/logging/WinstonLogger';
+import ClusterStrategy     from './ClusterStrategy.js';
+import WorkerPool          from './WorkerPool.js';
+import logger              from '../shared/logging/WinstonLogger.js';
 
 
 /*
diff --git a/ExpressAPI/src/process/ClusterStrategy.ts b/ExpressAPI/src/process/ClusterStrategy.ts
index 4628b6ce90f2b9a8b37d4c1437fdf9bf8a499174..7fb8f74c436b8d6c6a91aa84de273c39a9484174 100644
--- a/ExpressAPI/src/process/ClusterStrategy.ts
+++ b/ExpressAPI/src/process/ClusterStrategy.ts
@@ -1,4 +1,4 @@
-import WorkerPool from './WorkerPool';
+import WorkerPool from './WorkerPool.js';
 
 
 type ClusterStrategy = Array<WorkerPool>
diff --git a/ExpressAPI/src/process/WorkerPool.ts b/ExpressAPI/src/process/WorkerPool.ts
index 79c469ee02765ba1b2ee3a59135e16167cc51991..13d5be18f3f6d7cbd802025e4d63af4e5fa385f1 100644
--- a/ExpressAPI/src/process/WorkerPool.ts
+++ b/ExpressAPI/src/process/WorkerPool.ts
@@ -1,5 +1,5 @@
-import WorkerRole from './WorkerRole';
-import WorkerTask from './WorkerTask';
+import WorkerRole from './WorkerRole.js';
+import WorkerTask from './WorkerTask.js';
 
 
 /*
diff --git a/ExpressAPI/src/routes/ApiRoutesManager.ts b/ExpressAPI/src/routes/ApiRoutesManager.ts
index ec4eeb909e0580901c56fcf3fda13ce88c675149..57a418842eb2003e5cab56d24344877837f90691 100644
--- a/ExpressAPI/src/routes/ApiRoutesManager.ts
+++ b/ExpressAPI/src/routes/ApiRoutesManager.ts
@@ -1,10 +1,10 @@
 import { Express }      from 'express-serve-static-core';
-import RoutesManager    from '../express/RoutesManager';
-import BaseRoutes       from './BaseRoutes';
-import SessionRoutes    from './SessionRoutes';
-import AssignmentRoutes from './AssignmentRoutes';
-import GitlabRoutes     from './GitlabRoutes';
-import ExerciseRoutes   from './ExerciseRoutes';
+import RoutesManager    from '../express/RoutesManager.js';
+import BaseRoutes       from './BaseRoutes.js';
+import SessionRoutes    from './SessionRoutes.js';
+import AssignmentRoutes from './AssignmentRoutes.js';
+import GitlabRoutes     from './GitlabRoutes.js';
+import ExerciseRoutes   from './ExerciseRoutes.js';
 
 
 class AdminRoutesManager implements RoutesManager {
diff --git a/ExpressAPI/src/routes/AssignmentRoutes.ts b/ExpressAPI/src/routes/AssignmentRoutes.ts
index 121c4c4fe75ecfc3e69d649043eacd64c0d5702e..4a330a52828006bc82847fbc594406a6a5d535eb 100644
--- a/ExpressAPI/src/routes/AssignmentRoutes.ts
+++ b/ExpressAPI/src/routes/AssignmentRoutes.ts
@@ -2,24 +2,24 @@ import { Express }               from 'express-serve-static-core';
 import express                   from 'express';
 import * as ExpressValidator     from 'express-validator';
 import { StatusCodes }           from 'http-status-codes';
-import RoutesManager             from '../express/RoutesManager';
-import ParamsValidatorMiddleware from '../middlewares/ParamsValidatorMiddleware';
-import SecurityMiddleware        from '../middlewares/SecurityMiddleware';
-import SecurityCheckType         from '../types/SecurityCheckType';
-import GitlabManager             from '../managers/GitlabManager';
-import Config                    from '../config/Config';
-import logger                    from '../shared/logging/WinstonLogger';
-import DojoValidators            from '../helpers/DojoValidators';
+import RoutesManager             from '../express/RoutesManager.js';
+import ParamsValidatorMiddleware from '../middlewares/ParamsValidatorMiddleware.js';
+import SecurityMiddleware        from '../middlewares/SecurityMiddleware.js';
+import SecurityCheckType         from '../types/SecurityCheckType.js';
+import GitlabManager             from '../managers/GitlabManager.js';
+import Config                    from '../config/Config.js';
+import logger                    from '../shared/logging/WinstonLogger.js';
+import DojoValidators            from '../helpers/DojoValidators.js';
 import { Prisma }                from '@prisma/client';
-import db                        from '../helpers/DatabaseHelper';
-import { Assignment }            from '../types/DatabaseTypes';
-import AssignmentManager         from '../managers/AssignmentManager';
+import db                        from '../helpers/DatabaseHelper.js';
+import { Assignment }            from '../types/DatabaseTypes.js';
+import AssignmentManager         from '../managers/AssignmentManager.js';
 import fs                        from 'fs';
 import path                      from 'path';
-import SharedAssignmentHelper    from '../shared/helpers/Dojo/SharedAssignmentHelper';
-import GlobalHelper              from '../helpers/GlobalHelper';
-import DojoStatusCode            from '../shared/types/Dojo/DojoStatusCode';
-import DojoModelsHelper          from '../helpers/DojoModelsHelper';
+import SharedAssignmentHelper    from '../shared/helpers/Dojo/SharedAssignmentHelper.js';
+import GlobalHelper              from '../helpers/GlobalHelper.js';
+import DojoStatusCode            from '../shared/types/Dojo/DojoStatusCode.js';
+import DojoModelsHelper          from '../helpers/DojoModelsHelper.js';
 import * as Gitlab               from '@gitbeaker/rest';
 import { GitbeakerRequestError } from '@gitbeaker/requester-utils';
 
diff --git a/ExpressAPI/src/routes/BaseRoutes.ts b/ExpressAPI/src/routes/BaseRoutes.ts
index 474f5bbbe6a7a1a0e28a120c52ebea8cd501e410..57a215ff00ca7bee6260af671e392321d7c84bf6 100644
--- a/ExpressAPI/src/routes/BaseRoutes.ts
+++ b/ExpressAPI/src/routes/BaseRoutes.ts
@@ -1,7 +1,7 @@
 import { Express }     from 'express-serve-static-core';
 import express         from 'express';
 import { StatusCodes } from 'http-status-codes';
-import RoutesManager   from '../express/RoutesManager';
+import RoutesManager   from '../express/RoutesManager.js';
 
 
 class BaseRoutes implements RoutesManager {
diff --git a/ExpressAPI/src/routes/ExerciseRoutes.ts b/ExpressAPI/src/routes/ExerciseRoutes.ts
index 34607a0484e811c48956ec67a76b911bd0aff8d2..116fd1df9b57028231c1d6bc833f0f3b68bf0fbf 100644
--- a/ExpressAPI/src/routes/ExerciseRoutes.ts
+++ b/ExpressAPI/src/routes/ExerciseRoutes.ts
@@ -2,29 +2,29 @@ import { Express }               from 'express-serve-static-core';
 import express                   from 'express';
 import * as ExpressValidator     from 'express-validator';
 import { StatusCodes }           from 'http-status-codes';
-import RoutesManager             from '../express/RoutesManager';
-import ParamsValidatorMiddleware from '../middlewares/ParamsValidatorMiddleware';
-import SecurityMiddleware        from '../middlewares/SecurityMiddleware';
-import GitlabManager             from '../managers/GitlabManager';
-import Config                    from '../config/Config';
-import logger                    from '../shared/logging/WinstonLogger';
-import DojoValidators            from '../helpers/DojoValidators';
+import RoutesManager             from '../express/RoutesManager.js';
+import ParamsValidatorMiddleware from '../middlewares/ParamsValidatorMiddleware.js';
+import SecurityMiddleware        from '../middlewares/SecurityMiddleware.js';
+import GitlabManager             from '../managers/GitlabManager.js';
+import Config                    from '../config/Config.js';
+import logger                    from '../shared/logging/WinstonLogger.js';
+import DojoValidators            from '../helpers/DojoValidators.js';
 import { v4 as uuidv4 }          from 'uuid';
 import { Prisma }                from '@prisma/client';
-import { Assignment, Exercise }  from '../types/DatabaseTypes';
-import db                        from '../helpers/DatabaseHelper';
-import SecurityCheckType         from '../types/SecurityCheckType';
+import { Assignment, Exercise }  from '../types/DatabaseTypes.js';
+import db                        from '../helpers/DatabaseHelper.js';
+import SecurityCheckType         from '../types/SecurityCheckType.js';
 import JSON5                     from 'json5';
 import fs                        from 'fs';
 import path                      from 'path';
-import AssignmentFile            from '../shared/types/Dojo/AssignmentFile';
-import ExerciseResultsFile       from '../shared/types/Dojo/ExerciseResultsFile';
-import DojoStatusCode            from '../shared/types/Dojo/DojoStatusCode';
-import GlobalHelper              from '../helpers/GlobalHelper';
-import { IFileDirStat }          from '../shared/helpers/recursiveFilesStats/RecursiveFilesStats';
-import ExerciseManager           from '../managers/ExerciseManager';
+import AssignmentFile            from '../shared/types/Dojo/AssignmentFile.js';
+import ExerciseResultsFile       from '../shared/types/Dojo/ExerciseResultsFile.js';
+import DojoStatusCode            from '../shared/types/Dojo/DojoStatusCode.js';
+import GlobalHelper              from '../helpers/GlobalHelper.js';
+import { IFileDirStat }          from '../shared/helpers/recursiveFilesStats/RecursiveFilesStats.js';
+import ExerciseManager           from '../managers/ExerciseManager.js';
 import * as Gitlab               from '@gitbeaker/rest';
-import GitlabTreeFileType        from '../shared/types/Gitlab/GitlabTreeFileType';
+import GitlabTreeFileType        from '../shared/types/Gitlab/GitlabTreeFileType.js';
 import { GitbeakerRequestError } from '@gitbeaker/requester-utils';
 
 
diff --git a/ExpressAPI/src/routes/GitlabRoutes.ts b/ExpressAPI/src/routes/GitlabRoutes.ts
index 2d8ced089e6321ee86e7493e6cc97ad04cb93e63..1a5c00d23142e85bccd3b1ed681b1411c10bee7c 100644
--- a/ExpressAPI/src/routes/GitlabRoutes.ts
+++ b/ExpressAPI/src/routes/GitlabRoutes.ts
@@ -1,9 +1,9 @@
 import { Express }        from 'express-serve-static-core';
 import express            from 'express';
-import RoutesManager      from '../express/RoutesManager';
-import SecurityMiddleware from '../middlewares/SecurityMiddleware';
-import SecurityCheckType  from '../types/SecurityCheckType';
-import GitlabManager      from '../managers/GitlabManager';
+import RoutesManager      from '../express/RoutesManager.js';
+import SecurityMiddleware from '../middlewares/SecurityMiddleware.js';
+import SecurityCheckType  from '../types/SecurityCheckType.js';
+import GitlabManager      from '../managers/GitlabManager.js';
 
 
 class GitlabRoutes implements RoutesManager {
diff --git a/ExpressAPI/src/routes/SessionRoutes.ts b/ExpressAPI/src/routes/SessionRoutes.ts
index b4f223e664ed675c40f2648a96ca4e42daf8d610..4ea2571c49c15f8e5a3d962c032e43b790554e96 100644
--- a/ExpressAPI/src/routes/SessionRoutes.ts
+++ b/ExpressAPI/src/routes/SessionRoutes.ts
@@ -2,13 +2,13 @@ import { Express }               from 'express-serve-static-core';
 import express                   from 'express';
 import * as ExpressValidator     from 'express-validator';
 import { StatusCodes }           from 'http-status-codes';
-import RoutesManager             from '../express/RoutesManager';
-import ParamsValidatorMiddleware from '../middlewares/ParamsValidatorMiddleware';
-import SecurityMiddleware        from '../middlewares/SecurityMiddleware';
-import GitlabManager             from '../managers/GitlabManager';
-import UserManager               from '../managers/UserManager';
-import DojoStatusCode            from '../shared/types/Dojo/DojoStatusCode';
-import Config                    from '../config/Config';
+import RoutesManager             from '../express/RoutesManager.js';
+import ParamsValidatorMiddleware from '../middlewares/ParamsValidatorMiddleware.js';
+import SecurityMiddleware        from '../middlewares/SecurityMiddleware.js';
+import GitlabManager             from '../managers/GitlabManager.js';
+import UserManager               from '../managers/UserManager.js';
+import DojoStatusCode            from '../shared/types/Dojo/DojoStatusCode.js';
+import Config                    from '../config/Config.js';
 
 
 class SessionRoutes implements RoutesManager {
diff --git a/ExpressAPI/src/shared b/ExpressAPI/src/shared
index 6e78095b3fe73f2c2987de1a3d3b55511335a2bf..021300d29473dee2ad229384d22a521c0e5c14aa 160000
--- a/ExpressAPI/src/shared
+++ b/ExpressAPI/src/shared
@@ -1 +1 @@
-Subproject commit 6e78095b3fe73f2c2987de1a3d3b55511335a2bf
+Subproject commit 021300d29473dee2ad229384d22a521c0e5c14aa
diff --git a/ExpressAPI/src/types/DatabaseTypes.ts b/ExpressAPI/src/types/DatabaseTypes.ts
index 2a9726980de2a1bcc8187be1df7d3837c0fd4def..011d2efc5643f66cefb4da435b26e4579accfc32 100644
--- a/ExpressAPI/src/types/DatabaseTypes.ts
+++ b/ExpressAPI/src/types/DatabaseTypes.ts
@@ -1,5 +1,5 @@
 import { Prisma }  from '@prisma/client';
-import LazyVal     from '../shared/helpers/LazyVal';
+import LazyVal     from '../shared/helpers/LazyVal.js';
 import * as Gitlab from '@gitbeaker/rest';
 
 
diff --git a/ExpressAPI/src/types/express/index.d.ts b/ExpressAPI/src/types/express/index.d.ts
index e7ac814574fc914961ed95329b1954eb60a74997..744609f9823e62e1348d63df9252a48ccfa3b64b 100644
--- a/ExpressAPI/src/types/express/index.d.ts
+++ b/ExpressAPI/src/types/express/index.d.ts
@@ -1,5 +1,5 @@
-import Session                  from '../../controllers/Session';
-import { Assignment, Exercise } from '../DatabaseTypes';
+import Session                  from '../../controllers/Session.js';
+import { Assignment, Exercise } from '../DatabaseTypes.js';
 
 // to make the file a module and avoid the TypeScript error
 export {};