From the seeded default layout to a saved, scope-aware canvas: the widget catalog, the persisted grid, drag-and-resize, and full dashboard CRUD.
This guide walks you through building a configurable PMAP dashboard from the layout the service seeds on first load. You will read the default six-widget layout, learn the CustomDashboard data model, and add or remove widgets from the eight-type catalog through the Widget Library Drawer. Each change persists server-side, so the canvas you build is the canvas you return to.

It is written for analysts and security leads who want a workspace tuned to their own view of the data. By the end you will be able to reposition and resize widgets on the grid, set a dashboard-level filter preset that unscoped widgets inherit, and manage the full create, rename, switch, set-default, and delete lifecycle under strict per-user isolation.
Inside this guide
- Open the landing dashboard and read the six-widget layout the service seeds.
- Learn the CustomDashboard data model, including the layout array and Widget and WidgetConfig shapes.
- Add and remove widgets from the eight-type catalog using the Widget Library Drawer.
- Drag, resize, and save the grid so the layout survives a session and a browser switch.
- Set a dashboard-level filter preset and confirm unscoped widgets inherit it.
- Create, rename, switch, and set a default dashboard under per-user isolation.
- Review the data model and the security and isolation model in one place.
Before you start
- A PMAP account that can sign in to the AppShell behind AuthGuard, since the dashboard is the authenticated landing route.
- At least some analytics data in your tenant scope, so widgets render real values rather than empty states.
- Familiarity with the company and project pickers, because the global filter bar and per-widget scope both reference them.
- An understanding that dashboards are user-scoped, so the layouts you build are yours alone and are not shared with other users or admins.
- Optional: an API token if you want to follow the command-line path against the dashboards endpoint.


