# Compose a dashboard

Arrange views, share filters and publish a stable reader experience.

A dashboard places saved views into a layout and exposes shared inputs. A chart, record list and several related metrics can form different sections while reusing the same query where appropriate.

## Add the sections you need

Create a dashboard and add existing views, or create a view from the dashboard context. Keep descriptive titles focused on the section's purpose. You do not need to repeat the dashboard title inside every component.

Edit the existing dashboard surface to drag and resize placements. Keep the saved reader layout and the draft distinct; canceling an edit should return to the saved configuration.

For a view containing a single compact action, open its **⋯ → Placement** menu and choose **Dashboard** or **Header**. Placement is saved for that dashboard; the view keeps its configured action, inputs and data connections. Existing placements default to Dashboard. Move it back from the same menu to restore its saved column width.

## Share filters

Declare dashboard inputs and map them to placed views. A visible control only affects a query when that query consumes its binding. Use the query or a filter-form dataset to define semantics such as active paid subscriptions.

Record inputs can use a saved search view, manual entry or both. Zero and false are valid values for compatible typed inputs. Do not place secrets in URL-backed filters or destination inputs.

## Publish for readers

Publication freezes the approved views, queries, input mappings and workflow revisions. Editing a child draft does not change an existing publication. Publish the dashboard again after reviewing changes you want readers to use.

Readers and operators still use current access checks. Publication is not a way to bypass revoked source access or grant an agent broader authority.

## Reuse a dashboard with new connections

Select **Copy with new connections** from the dashboard's context menu to review its dependencies against an existing destination project. A supported copy creates unpublished drafts and retains the original. Follow [Copy between projects](https://bytesmap.com/docs/build/copy-between-projects.md) for compatibility checks, current limits and interrupted-copy recovery.

## Inspect the complete flow

Open **Dashboard flow** to inspect the dashboard's placed sections and reachable destinations. The initial view references can be expanded in place to show their underlying query, calculation, component and interaction steps.

The header selects all placed views or a specific view. This selection is independent from whether a reference is expanded. Referenced detail destinations are part of the navigation path, not additional initial dashboard sections.

**Arrange** changes node positions. **Fit** changes the viewport. Neither operation queries a database or changes the chart results.

## Exercise the reader flow

Check initial loading, refresh, empty results, errors and required inputs. Open a drawer, follow a nested record and return. Reload its deep link using the intended reader account. Check small screens and keyboard selection, not only the default desktop layout.

Use [query cost](https://bytesmap.com/docs/sources/query-cost.md) before adding frequent refreshes, and [scheduled reports](https://bytesmap.com/docs/automate/reports.md) when a periodic summary is enough.
