Use cases
Your CI already builds websites. Put them on URLs.
Test reports, coverage, component libraries, notebook exports — these tools all emit a static site that dies in an artifacts zip or a chat attachment. Two lines of YAML — or one curl — turn each into a live link.
- PlaywrightYour Playwright HTML report, online before the run finishesTurn the Playwright HTML report into a shareable link on every run. Traces, screenshots and videos all work — straight from CI, no signup.The recipe
- JaCoCoJaCoCo coverage your team can actually clickPut clickable JaCoCo coverage on every PR. Package-to-line drill-down works as designed — Gradle and Maven, no server to run.The recipe
- GradlePut your Gradle test reports on a URLGive every Gradle test run a URL. Failed tests, stdout and stack traces render in the browser — no more artifact spelunking.The recipe
- Python coverageYour Python coverage HTML report, as a link on every PRShare coverage.py's annotated source as a link. Per-line hit highlighting reviewers open in one click — works with pytest-cov too.The recipe
- StorybookStorybook from CI — designers get a link, not a checkoutHand designers a live Storybook link per PR instead of a checkout. Full interactivity — no Chromatic seats, no per-seat pricing.The recipe
- AllureAllure reports without running an Allure serverSkip the Allure server. allure generate already makes a static site — serve it as a URL and share test results with anyone.The recipe
- pytest-htmlYour pytest report, one click from the PRTurn the pytest-html report into a shareable link on every run. Self-contained, so the whole thing is one file — and one URL.The recipe
- JestYour Jest HTML report, one link from the PRTurn the Jest HTML report into a shareable link on every run. jest-html-reporters or jest-stare — one file or a folder, both deploy as-is.The recipe
- Robot FrameworkRobot Framework reports with a real URL, not a file shareGive every Robot Framework run a URL. report.html and log.html linked and clickable in the browser — straight from CI, no signup.The recipe
- LighthouseLighthouse scores on the PR, not buried in the logsShip the Lighthouse HTML report as a link on every PR. Full audit — scores, filmstrip, opportunities — instead of a number in the CI log.The recipe
- ViteYour Vite build, on a URL in secondsTurn npm run build into a shareable link. The dist/ folder is already a complete static site — ship it as-is.The recipe
- AstroAstro's dist/ is a website — give it a URLShip your Astro static build as a link. dist/ goes up untouched — no adapter config, no platform account.The recipe
- HugoShare your Hugo site without the hosting song and danceRun hugo, ship public/. A live URL for previews and demos — no hosting platform, no account.The recipe
- DocusaurusDocusaurus previews your whole team can openGive every docs PR a live preview link. The build/ folder deploys as-is — versioning and search index included.The recipe
- MkDocsmkdocs build, then one POST — docs on a URLTurn mkdocs build into a shareable link. The site/ folder goes up as-is — Material theme and search index included.The recipe
- Next.jsNext.js static export, live without a platformShip your Next.js static export as a link. out/ deploys as-is — no project setup, no server runtime.The recipe
- Create React AppYour CRA build, shareable with one curlTurn react-scripts build into a shareable link. The build/ folder deploys as-is — no hosting account, no eject.The recipe
- Vue CLIVue CLI builds are static files — put them on a URLTurn vue-cli-service build into a shareable link. dist/ goes up untouched — hashed assets and all.The recipe
- Nuxtnuxi generate, one POST — your Nuxt site on a URLShip your fully prerendered Nuxt site as a link. .output/public/ deploys as-is — payload files and all.The recipe
- SvelteKitSvelteKit, fully static, on a URL in one stepShip your prerendered SvelteKit site as a link. adapter-static's build/ folder goes up as-is.The recipe
- JekyllHost a Jekyll site without the Pages machineryRun jekyll build, ship _site/. A live preview link without touching GitHub Pages config.The recipe
- Zip uploadUpload a zip, get a URL — that's the whole APIThe entire deploy API is one POST: zip your folder, get a live URL. No account, no SDK, no config.The recipe
- Single HTML fileOne HTML file, one POST, one URLThe lightest deploy there is: POST one HTML file, get a live URL. No account, no zip, no build step.The recipe
- JupyterSend a notebook to someone who doesn't run Jupyternbconvert --to html, a single upload, and the notebook is a URL any browser can open — outputs and charts intact, no kernel required.The recipe
- StreamlitShare a Streamlit app without running a serverstlite compiles your Streamlit app into a single HTML file, running the Python directly in the viewer's browser. Upload it, send the link, and walk away. No server to keep alive.The recipe
- Reveal.jsYour reveal.js deck deserves a URL. Not an email attachment.A reveal.js deck is already a static website. Upload it; every transition, fragment and speaker note works straight from the link.The recipe
- marimoShare a marimo notebook as a link. Snapshot or interactive.marimo's exporters do the heavy lifting: static HTML for a quick link, html-wasm when the reader actually needs to move the sliders themselves.The recipe
- QuartoShip the Quarto report. Not the repository.Run quarto render with embed-resources to get one self-contained HTML file. Upload it, and the report is a link. Whole project sites go up as a zip.The recipe
- FoliumA Folium map your reader can actually panm.save() gives you a self-contained interactive map — one upload later it's a link that pans, zooms and pops up tooltips.The recipe
Something else that emits HTML? If it fits in a folder, it deploys — see Test & build reports in CI and CI with plain curl.