Day 1 scaffold for the Webpage Node / App-concept Hackweek project: a
project-scoped App entity and its Page tree, decoupled from the
workflow canvas, plus enough editor UI to build one end-to-end.
Backend (packages/cli/src/modules/apps, packages/@n8n/db migration):
- App entity (namespace, theme JSON) and Page entity, pages forming a
tree via a self-referencing parentPageId. A page's route can be a
static slug, a dynamic :param segment (e.g. :id), or empty (meaning
it's the index/home page for its level).
- Business rules enforced server-side: a namespace is unique per
project; a page's route is unique among its siblings; an index page
(empty route) can't have children, since it contributes no path
segment of its own and a child would collide with a sibling's URL.
- New app:* scopes, an appId branch in userHasScopes, an opt-in
backend module (apps) enabled by default alongside data-table.
Frontend (packages/frontend/editor-ui/src/features/apps):
- Apps list, App detail (page tree), and Page detail views, reachable
both from the project view and the home overview tab bar.
- Create App / Create Page via modals (matching Data Table's pattern),
not inline forms.
- Page hierarchy shown as a flat card grid per level with drill-down
navigation (mirrors n8n's own Folders feature) instead of a fully
expanded indented tree.
- AppBreadcrumbs: App > ancestor pages > current page/app, each a link
back up except the current one.
- The App's and each Page's full served URL shown as a copyable field,
live as the route is edited.
- Delete (with confirmation) on Apps and Pages throughout.
Goal package: goals/webpage-node/ (facts.md, plan.md, plan-week.md).