diff --git a/apps/canvas/back/index.js b/apps/canvas/back/index.js
index 6117e46..ef3449f 100644
--- a/apps/canvas/back/index.js
+++ b/apps/canvas/back/index.js
@@ -199,6 +199,43 @@
         resp.end();
     }
 });
+const handleStatus = (req, resp) => __awaiter(void 0, void 0, void 0, function* () {
+    try {
+        const projectId = Number(req.params["projectId"]);
+        const p = yield db.project.findUnique({
+            where: {
+                id: projectId,
+            },
+            select: {
+                instanceId: true,
+            },
+        });
+        console.log(projectId, p);
+        if (p === null) {
+            resp.status(404);
+            return;
+        }
+        if (p.instanceId == null) {
+            resp.status(404);
+            return;
+        }
+        const r = yield axios_1.default.request({
+            url: `http://appmanager.hgrz-appmanager.svc.cluster.local/api/tasks/${p.instanceId}`,
+            method: "get",
+        });
+        resp.status(r.status);
+        if (r.status === 200) {
+            resp.write(JSON.stringify(r.data));
+        }
+    }
+    catch (e) {
+        console.log(e);
+        resp.status(500);
+    }
+    finally {
+        resp.end();
+    }
+});
 function start() {
     return __awaiter(this, void 0, void 0, function* () {
         yield db.$connect();
@@ -207,6 +244,7 @@
         app.post("/api/project/:projectId/saved", handleSave);
         app.get("/api/project/:projectId/saved", handleSavedGet);
         app.post("/api/project/:projectId/deploy", handleDeploy);
+        app.get("/api/project/:projectId/status", handleStatus);
         app.get("/api/project", handleProjectAll);
         app.post("/api/project", handleProjectCreate);
         app.use("/", express_1.default.static("../front/dist"));
