Standalone delight for simultaneous utilization of Amazon non-bookable spaces. This is the
simultaneous-use experience only; it is not the broader amazonnonbook dashboard.
npm run serveOpen http://localhost:4174.
The delight starts with no buildings selected. Choose one or more buildings, or All, before charts and tables aggregate.
Put a Density API token at:
env/density-api-token.txt
Then run:
npm run build:api
npm run split:dataThe build flow:
- Reads
/v3/spaces. - Scopes to
SEA25,SEA37,SEA44,SJC31, andJFK27by default. Override withAMAZON_NONBOOKABLE_BUILDINGS=SEA25,JFK27 npm run build:api. - Keeps spaces with a
Non BookableorNon-Bookablelabel. - Uses the companion label as the space type filter where possible.
- Keeps only spaces with presence-health status
healthy,degraded, oroffline. - Pulls
/v3/analytics/sessions/rawand stores five-minute simultaneous-use concurrency rows. - Splits the generated data into
data/catalog.jsonanddata/metrics.jsonso the page can load filters quickly and defer heavy usage metrics until a building is selected.
Daily threshold metrics use metrics.intervals from Atlas/time-used data when present, and fall back to raw-session-derived minutes when interval rows are not present. Hourly simultaneous-use metrics use raw-session concurrency.
Atlas spaces.csv exports can be used as a source-of-truth check against the raw-session dashboard:
npm run check:atlas-csv -- data/dashboard-data.json "/path/to/spaces.csv"The check matches CSV rows to the labeled non-bookable spaces already in the dashboard catalog, converts 15-minute TIME_USED_MINUTES into comparable five-minute average-active contributions, and reports the CSV metrics next to the raw-session dashboard metrics.
Hourly simultaneous utilization is calculated as average active spaces across the twelve five-minute slices in an hour, divided by all selected non-bookable spaces in the current filter scope. Raw-session concurrency counts occupied session_type: "1" sessions only.