Skip to content

product

Dashboard/frontend product work — patient viewers, compute tooling, and other user-facing surfaces built on top of the infrastructure workstream's apps.

Goal: user-facing product surfaces (currently the internal dashboard app — patient imaging viewers, compute tooling, the blog) built on top of vxData and the other infrastructure plumbing. No monthly report has ever been filed for product; this page exists because a session recap landed in inbox/ before the workstream had a wiki home (begin-work step 4 was a dead end until this page was added — 2026-08-06).

Most of the concrete how-to material for dashboard-frontend/dashboard-api work still lives under infrastructure/sops/dashboard-app-dev-and-deploy.md (local dev, deploy, blog rendering) since that app is jointly owned with infrastructure. This page tracks product-specific feature work instead.

What’s documented so far

  • Diffsim volume viewer: the patient page’s DiffsimScanCard used to render one VolumeBrowser (and one Niivue WebGL context) per DiffsimScan — hundreds per Essen01 patient. Collapsed to a single VolumeBrowser with a nested scan > volume sidebar via a new optional groups?: VolumeGroup[] prop; the flat volumes prop remains the source of truth for selection/sorting/filtering/search/prefetch (virdx/mono#313 -> draft PR virdx/mono#314). Fixed a related VolumeViewer race along the way: the volume-load effect read nvRef before the canvas-keyed mount effect had run, so a viewer whose volume was already known on first render never retried and stuck on Niivue’s own “loading…” screen.
    • Known local-dev trap this surfaced: apps/vxdata-api’s just inject-mock seeds diffsim volumes as plain Volume payloads instead of DiffsimVolume, so a freshly seeded diffsim scan shows zero volumes — see the “Local dev loop” gotchas in vxData SDK + schema model.
    • To get a viewer-testable volume into a local stack: POST /s3/presign with direction: "upload", PUT the bytes to the returned URL, and use the returned s3:// path as the resource’s url/path_nii — the presign response is authoritative for the key, don’t assume a layout.
    • Headless Chromium renders Niivue canvases unreliably; use a headed browser for WebGL screenshot validation.

No sops/ or projects/ subdirectory exists yet for this workstream — add them as more product work gets synthesized from inbox/.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close