Share an Eleventy build
Eleventy's output is exactly what you told it to emit — usually _site/, a
tree of HTML with whatever assets your templates reference. That is a good
property right up to the moment you want someone else to look at it, at which
point you have a folder and they have an email client.
Build
npx @11ty/eleventy # → _site/
If your templates use absolute asset paths, route them through the url
filter so a non-root location still resolves:
<link rel="stylesheet" href="{{ '/css/main.css' | url }}">
Publish _site/
Drag _site/ (or a zip of it) into the app:
index.htmlbecomes the report body.- Pages, stylesheets, scripts, fonts and images upload as assets, and their references are rewritten to the uploaded copies.
- Scripts run inside a sandboxed iframe (
allow-scripts, noallow-same-origin), so client-side search and interactive components work.
A preview URL with no host, no deploy, nothing to clean up afterwards.
Per-PR previews
npx @11ty/eleventy
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 _site/index.html \
--arg title "Preview — $GITHUB_HEAD_REF" '{title: $title, html: $html}')"
One report id per branch: the link in the PR description never changes, and every push appends a revision.
What review adds
- Anchored threads on the rendered copy — the reason to send a build rather than a diff. See commenting on HTML.
- Revisions, so "applied" is checkable rather than claimed.
- Access per report — private, team, domain-gated, or named reviewers, so unpublished content stays unpublished. See the sharing model.
Limits
- Entry HTML: 5 MB. Assets: 25 MB per file, 250 MB and 500 files total. Publish the section under review rather than a large archive.
- 60 requests/minute per token.
Try it
Comma is free — unlimited reports, unlimited commenters, unlimited revision history.