Share an Evidence.dev build

Evidence's model is unusually clean: SQL in markdown, version controlled, building to a static site. Everything about it is better than a BI tool right up to the last step, which is a deployment — and a deployment is the wrong unit for most of what analysts are asked for.

The actual request is "can you look at churn by cohort for the board meeting". That is one report, for five people, once a quarter. Standing up a hosted site with auth for it is out of proportion, and the usual fallback is exporting to PDF, which throws away every interactive element Evidence just built.

Build it

npm run build          # → build/
build/
├── index.html
├── churn/  revenue/       # a page per markdown file
├── _app/                  # the compiled app + baked data
└── data/

The data is baked in at build time, which is what makes the output shareable at all: no warehouse connection, no credentials, no running process.

Drop the folder in

Drag build/ (or a zip of it) into Comma:

  • index.html becomes the report body — the page carrying the comment layer.
  • Every page, the compiled app and the baked data upload alongside it, with relative references rewritten to the uploaded copies.
  • Scripts run inside a sandboxed iframe (allow-scripts, no allow-same-origin), so charts render, dropdown inputs filter, and tables sort.

One URL. Access set per report — private, your team, anyone signed in at your domain, or anyone with the link. That last option is what makes a client-facing report workable without provisioning them an account. See sharing & access control.

From a scheduled job

npm run sources && npm run build

curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --rawfile html build/index.html \
        --arg t "Weekly metrics — $(date -u +%F)" '{title: $t, html: $html}')"

Supporting files go up through POST /api/v1/reports/$REPORT_ID/assets as base64 — see the API reference and publishing from CI. Or let a routine run the publish on a schedule.

PATCHing one id keeps the link stable while each run appends a revision, so "what did this look like at the end of Q2?" is answered by scrubbing the history — which no BI dashboard does, because a dashboard only has a present tense.

The questions land on the chart

The reason analysts dread distributing reports is not the building. It is the follow-up: four separate email threads asking variations of "does this include trials?", each one losing the context of which chart was being asked about.

Anchored comments put the question on the chart and the answer next to it, where the next reader finds it. See commenting on HTML.

Limits

  • Entry HTML: 5 MB. Assets: 25 MB per file, 250 MB and 500 files total. A build with large baked datasets can exceed the total — aggregate in the SQL rather than shipping raw rows the chart immediately groups.
  • Scripts run, sandboxed — no same-origin access.
  • 60 requests/minute per token.

Try it

Comma is free — unlimited reports, unlimited commenters, unlimited revision history.

Publish a report →

Related