Portal Community

Top-Level Structure

{
  "schemaVersion": "1.0",        // Bundle schema version — used by importer for compatibility
  "version": "1.4.2",            // App version label (advisory)
  "exportedAt": "2026-05-25T14:30:00Z",
  "exportedBy": "user-abc",
  "changelog": "Added approval widget",

  "app": { ... },                // App metadata
  "pages": [ ... ],              // AppPage definitions
  "panes": [ ... ],              // Pane configs
  "widgets": [ ... ],            // Widget placements
  "navigation": { ... },         // Sidebar navigation config
  "variables": [ ... ],          // App variable declarations
  "permissions": { ... }         // App and page access config
}

app Section

"app": {
  "appId": "crm",
  "name": "CRM Application",
  "description": "Internal CRM for sales team",
  "tenantId": null,              // null in export — set by importer
  "homePageId": "dashboard",
  "theme": "default",
  "locale": "en-US"
}

pages Section

"pages": [
  {
    "pageId": "dashboard",
    "title": "Dashboard",
    "route": "/",
    "isHome": true,
    "breadcrumbParent": null,
    "requiredRoles": [],
    "showBreadcrumb": false
  },
  {
    "pageId": "lead-detail",
    "title": "Lead: {{ route.id }}",
    "route": "/leads/:id",
    "isHome": false,
    "breadcrumbParent": "leads-list",
    "requiredRoles": ["sales", "admin"]
  }
]

widgets Section

"widgets": [
  {
    "widgetId": "leads-grid",
    "pageId": "leads-list",
    "paneId": "main-pane",
    "type": "DataGrid",
    "position": { "col": 0, "row": 0, "colSpan": 12, "rowSpan": 4 },
    "config": {
      "dataSource": "GetLeads",
      "columns": [
        { "field": "name", "header": "Name", "sortable": true },
        { "field": "status", "header": "Status" }
      ],
      "rowAction": {
        "type": "navigate",
        "target": "/leads/{{ row.id }}"
      }
    },
    "visibilityExpression": null,
    "visibleTo": []
  }
]

navigation Section

"navigation": {
  "sidebar": {
    "collapsible": true,
    "defaultCollapsed": false,
    "items": [
      { "type": "item", "label": "Dashboard", "icon": "gauge", "targetPageId": "dashboard" },
      { "type": "divider" },
      {
        "type": "group",
        "label": "Sales",
        "items": [
          { "type": "item", "label": "Leads", "icon": "users", "targetPageId": "leads-list" }
        ]
      }
    ]
  }
}

variables Section

"variables": [
  { "name": "statusFilter", "type": "string", "defaultValue": "active", "syncToUrl": false },
  { "name": "selectedLeadId", "type": "string", "defaultValue": null, "syncToUrl": false },
  { "name": "grandTotal", "type": "number", "defaultValue": 0, "syncToUrl": false }
]

permissions Section

"permissions": {
  "allowedRoles": ["admin", "sales", "sales-manager"],
  "pageRoles": {
    "admin-panel": ["admin"],
    "reports": ["manager", "admin"]
  }
}