From d9bfd8a2fdc279bd080e6bba5c924513f94a6d4e Mon Sep 17 00:00:00 2001
From: Tomas Dvorak
Date: Wed, 23 Sep 2026 18:20:05 +0200
Subject: [PATCH] feat(canvas): fullscreen workspace outside the app shell
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Move /projects/:id and its service detail route out of PlatformShell —
the project view now owns the entire viewport like Railway's canvas:
no sidebar, no global nav, just the slim project bar over the graph.
Service detail inherits the same chrome-free context with a breadcrumb
back to the canvas, and back/delete navigation preserves ?demo=1.
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
---
app/frontend/src/app/App.tsx | 6 ++++--
.../src/features/service/pages/ServiceDetailPage.tsx | 2 +-
.../src/features/workspace/pages/ProjectWorkspacePage.tsx | 8 +++++---
3 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/app/frontend/src/app/App.tsx b/app/frontend/src/app/App.tsx
index ef3444c..b73d21c 100644
--- a/app/frontend/src/app/App.tsx
+++ b/app/frontend/src/app/App.tsx
@@ -116,10 +116,12 @@ export default function App() {
} />
{/* Public browsing — approved projects, templates, docs. */}
+ {/* Project workspace renders outside the shell — fullscreen canvas, no nav chrome */}
+ } />
+ } />
+
}>
} />
- } />
- } />
} />
} />
} />
diff --git a/app/frontend/src/features/service/pages/ServiceDetailPage.tsx b/app/frontend/src/features/service/pages/ServiceDetailPage.tsx
index 797f3f7..26b6570 100644
--- a/app/frontend/src/features/service/pages/ServiceDetailPage.tsx
+++ b/app/frontend/src/features/service/pages/ServiceDetailPage.tsx
@@ -384,7 +384,7 @@ export function ServiceDetailPage() {
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: ['project-services', projectId] });
queryClient.invalidateQueries({ queryKey: ['projects'] });
- navigate(`/projects/${projectId}`);
+ navigate(isDemoMode ? `/projects/${projectId}?demo=1` : `/projects/${projectId}`);
},
});
diff --git a/app/frontend/src/features/workspace/pages/ProjectWorkspacePage.tsx b/app/frontend/src/features/workspace/pages/ProjectWorkspacePage.tsx
index 6c3b8e8..126c5bd 100644
--- a/app/frontend/src/features/workspace/pages/ProjectWorkspacePage.tsx
+++ b/app/frontend/src/features/workspace/pages/ProjectWorkspacePage.tsx
@@ -644,7 +644,7 @@ export function ProjectWorkspacePage() {
This project may have been deleted or you don't have access.