Pages Management System
Complete guide for managing pages in GoGrab Space Editor - Space, Universe, and Global page types
đ Pages Management System
The GoGrab Space Editor provides a comprehensive page management system that supports three distinct page scopes: Space, Universe, and Global. This guide covers how to create, edit, manage, and understand the differences between each page type.
đ¯ Overview
Pages in GoGrab Space are the building blocks of your platform. Each page contains widgets, layouts, and configurations that define what users see and interact with. The page management system is accessible through the Pages tab in the editor's right sidebar.
Quick Access
- Location: Editor â Right Sidebar â "Pages" Tab
- Component:
PageBrowserComponent - Backend API:
POST/GET/PUT/DELETE /api/spaces/:spaceId/space-pages
đ Page Scope Types
graph TD
A[Pages] --> B[đ Space Pages]
A --> C[đĻ Universe Pages]
A --> D[đ Global Pages]
B --> B1[User-created]
B --> B2[Reusable within your space]
B --> B3[Stored in space_pages collection]
C --> C1[Bound to specific universe]
C --> C2[Part of universe module tree]
C --> C3[Stored in universe.modules]
D --> D1[Pre-made templates]
D --> D2[Created by GoGrab team]
D --> D3[Available to all users]
style B fill:#3b82f6,color:#fff
style C fill:#8b5cf6,color:#fff
style D fill:#10b981,color:#fff
đ Space Pages (Blue)
Icon: đ | Color: Blue (#3b82f6)
Space pages are user-created pages that can be reused across multiple universes within your space.
| Property | Value |
|---|---|
| Scope | space |
| Storage | space_<spaceId>.space_pages collection |
| Reusability | Across all universes in your space |
| Creator | You (the space owner) |
| Use Case | Shared layouts, common landing pages, reusable templates |
When to use Space Pages:
- Creating a layout you want to use in multiple universes
- Building reusable components like headers, footers, or navigation
- Designing template pages for consistent branding
đĻ Universe Pages (Purple)
Icon: đĻ | Color: Purple (#8b5cf6)
Universe pages are bound to a specific universe and are part of that universe's module tree.
| Property | Value |
|---|---|
| Scope | universe |
| Storage | universe.modules[] array |
| Reusability | Only within the bound universe |
| Creator | You (the space owner) |
| Use Case | Universe-specific content, unique pages |
When to use Universe Pages:
- Building pages specific to one project/universe
- Creating unique content that doesn't need to be shared
- Pages that depend on universe-specific data or modules
đ Global Pages (Green)
Icon: đ | Color: Green (#10b981)
Global pages are pre-made templates created by the GoGrab team, available to all users.
| Property | Value |
|---|---|
| Scope | global |
| Storage | Global templates collection (future) |
| Reusability | Available to all GoGrab Space users |
| Creator | GoGrab Team |
| Use Case | Professional templates, starter pages |
Note: Global pages are a future feature. Currently, the tab shows a count of 0.
đ ī¸ How to Create Pages
Creating a Space Page
Open the Editor
- Navigate to your space
- Open the editor for any universe or the space dashboard
Access the Pages Tab
- Click on the "Pages" tab in the right sidebar
- You'll see the scope filter tabs: All | Space | Universe | Global
Click "Create Page"
- Click the
+button in the header - Or click "Create your first page" if no pages exist
- Click the
Configure Your Page
- The page will be created with default settings
- Use the inline title editor in the toolbar to rename it
- Click the settings icon (âī¸) to edit metadata (slug, description, status)
Add Widgets
- Drag widgets from the left sidebar onto the canvas
- Configure widget properties in the properties panel
Save
- Click "Save" in the toolbar dropdown
- The page is automatically saved to
space_pagescollection
Creating a Universe Page
Navigate to a Universe
- Open a specific universe from your space
Open the Editor
- The editor will detect you're in a universe context
Create Page
- When creating a page while in a universe, it will be scoped to that universe
- The page becomes part of the universe's module tree
âī¸ How to Edit Pages
Editing Page Title (Inline)
The page title can be edited directly in the toolbar:
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â [đ] My Page Title [âī¸] [đĻ Universe: my-universe] â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
- Click on the title in the toolbar
- Type the new title
- Press Enter or click away to save
- Changes are immediately persisted to MongoDB
Editing Page Settings
For more detailed editing (slug, description, status, tags):
Click the settings icon (âī¸) next to the title
- Or click the edit button (âī¸) on a page in the browser
The Page Settings Modal opens with:
- Title: Page display name
- Slug: URL-friendly identifier (e.g.,
my-page) - Description: Brief description for SEO and search
- Status: Draft, Published, Archived, or Review
- Tags: Categorization tags
Click Save to persist changes
Page Status Options
| Status | Description | Badge Color |
|---|---|---|
draft |
Work in progress | Yellow |
published |
Live and visible | Green |
archived |
Hidden from navigation | Gray |
review |
Pending approval | Purple |
đ How to Browse & Select Pages
Using the Page Browser
The Page Browser component provides a comprehensive view of all pages:
âââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â đ Pages [+] â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â đ Search pages... â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â [All 5] [đ Space 3] [đĻ Universe 2] [đ Global 0] â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â âââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â [đ] Homepage [PUBLISHED] â â
â â /homepage â â
â â [âī¸][âī¸][đī¸] â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââ â
â âââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â [đĻ] Product Page [DRAFT] â â
â â /product â â
â â my-universe â â
â â [âī¸][âī¸][đī¸] â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââ â
â âââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â [đ] Landing Template [PUBLISHED] â â
â â /landing-template â â
â â [âī¸][âšī¸] â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââ â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â 5 of 5 pages [đ] â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Action Buttons
Each page item has action buttons that appear on hover:
| Button | Icon | Description | Available For |
|---|---|---|---|
| Open | âī¸ | Open page in editor | All pages |
| Edit | âī¸ | Edit page settings (title, slug, etc.) | Space & Universe pages |
| Delete | đī¸ | Delete the page | Space & Universe pages |
| Info | âšī¸ | View template information | Global pages only |
Note: Global templates are read-only. You cannot edit or delete them, but you can open them and save as a new Space page.
Filtering by Scope
Click on the scope tabs to filter pages:
- All: Shows all pages regardless of scope
- đ Space: Shows only space-scoped pages (blue)
- đĻ Universe: Shows only universe-scoped pages (purple)
- đ Global: Shows only global templates (green)
Searching Pages
Use the search input to filter pages by:
- Page title
- Page slug
- Universe name (for universe pages)
Selecting a Page
Click on any page item to load it into the editor canvas.
Opening Pages via URL
Pages can be accessed directly via URL based on their scope:
| Scope | URL Pattern | Example |
|---|---|---|
| Space | /space/{spaceSlug}/editor/page/{pageId} |
/space/my-space/editor/page/page-123 |
| Universe | /space/{spaceSlug}/editor/universe/{universeId}/page/{pageId} |
/space/my-space/editor/universe/uni-456/page/page-123 |
| Global | /space/{spaceSlug}/editor/page/{pageId}?template=true |
/space/my-space/editor/page/tpl-789?template=true |
Route Parameters:
{spaceSlug}: Your space's URL-friendly identifier{universeId}: The universe ID (for universe-scoped pages){pageId}: The unique page identifier?template=true: Query param indicating read-only template mode
đī¸ How to Delete Pages
From the Page Browser
- Hover over the page you want to delete
- Click the delete button (đī¸) on the right
- Confirm the deletion in the confirmation dialog
Important Notes
- Space pages: Deleted from
space_pagescollection - Universe pages: Removed from universe's module tree
- Deletion is permanent - consider archiving instead
đī¸ Technical Architecture
Data Flow
sequenceDiagram
participant UI as Editor UI
participant Action as SaveCurrentPageAction
participant SpaceAPI as SpaceApiService
participant Backend as Backend API
participant DB as MongoDB
UI->>Action: Save page (pageToSave)
Action->>Action: Detect scope (space vs universe)
alt Space Page
Action->>SpaceAPI: saveSpacePage(spaceId, page)
SpaceAPI->>Backend: PUT /api/spaces/:id/space-pages/:pageId
Backend->>DB: Update space_<id>.space_pages
else Universe Page
Action->>SpaceAPI: saveUniversePage(universeId, page)
SpaceAPI->>Backend: PUT /api/universes/:id/modules
Backend->>DB: Update universe.modules[]
end
DB-->>UI: Success response
Key Components
| Component | Location | Purpose |
|---|---|---|
PageBrowserComponent |
libs/libs-ui/editor-ui |
Browse and manage pages |
PageTitleEditorComponent |
libs/libs-ui/editor-ui |
Inline title editing |
PageSettingsModalComponent |
libs/libs-ui/editor-ui |
Full page metadata editing |
SaveCurrentPageAction |
libs/libs-structural/editor-web-lib |
Handles save with scope detection |
SpaceApiService |
libs/libs-foundational/core-angular |
API communication |
Backend Endpoints
| Method | Endpoint | Description |
|---|---|---|
POST |
/api/spaces/:spaceId/space-pages |
Create space page |
GET |
/api/spaces/:spaceId/space-pages |
List all space pages |
GET |
/api/spaces/:spaceId/space-pages/:pageId |
Get single page |
PUT |
/api/spaces/:spaceId/space-pages/:pageId |
Update page |
DELETE |
/api/spaces/:spaceId/space-pages/:pageId |
Delete page |
MongoDB Collections
// Space pages stored in per-space database
space_<spaceId>.space_pages: [
{
_id: "page-123...",
id: "page-123...",
title: "My Page",
slug: "my-page",
widgets: [...],
metadata: { scope: "global", isReusable: true },
spaceId: "space-abc...",
status: "draft",
createdAt: "2025-11-25T...",
updatedAt: "2025-11-25T..."
}
]
// Universe pages stored in universe document
universes: [
{
_id: "universe-456...",
modules: [
{
id: "page-789...",
type: "page",
metadata: { scope: "universe" },
// ... page data
}
]
}
]
đ¨ UI/UX Guidelines
Page Item Card Design
Each page in the browser displays:
- Scope Indicator (left): Icon showing page type (đ/đĻ/đ)
- Page Info (center):
- Title (bold, truncates with ellipsis)
- Status badge (inline with title)
- Slug (monospace, below title)
- Universe name (if applicable, purple badge)
- Actions (right, on hover): Edit and Delete buttons
Color Coding
| Scope | Icon | Tab Active | Card Indicator |
|---|---|---|---|
| Space | đ | Blue (#3b82f6) | Blue gradient |
| Universe | đĻ | Purple (#8b5cf6) | Purple gradient |
| Global | đ | Green (#10b981) | Green gradient |
Status Badge Colors
| Status | Background | Text |
|---|---|---|
| Draft | Yellow (15% opacity) | Yellow (#fbbf24) |
| Published | Green (15% opacity) | Green (#34d399) |
| Archived | Gray (15% opacity) | Gray (#94a3b8) |
| Review | Purple (15% opacity) | Purple (#818cf8) |
đŽ Future Enhancements
- Global Templates API: Backend endpoints for GoGrab team templates
- Page Duplication: Copy pages between scopes
- Page Versioning: Track page history and rollback
- Collaborative Editing: Real-time multi-user editing
- Page Analytics: View page performance metrics
- Drag-and-Drop Reordering: Reorder pages in the browser
đ Related Documentation
Last Updated: November 25, 2025 Session ID: 11.25.2.5 Status: â Complete