finds.dev← search

// the find

observablehq/framework

★ 3,657 · TypeScript · ISC · updated May 2026

A static site generator for data apps, dashboards, reports, and more. Observable Framework combines JavaScript on the front-end for interactive graphics with any language on the back-end for data analysis.

Observable Framework is a static site generator for dashboards and data reports. Pages are Markdown with embedded JavaScript for the interactive parts, and data loaders run at build time and write static snapshots, so the output loads without a backend. It suits teams that already do their data work in Python, R, or SQL and want a front end that ships as plain files.

- The loader contract is file naming. forecast.json.py, quakes.csv.js, and dft-road-collisions.csv.sh each produce a build-time artifact, and the extension sets both the output format and the runner. The page code never needs to know which language produced the data.

- The output is plain static files with no request-time compute, so any static host works and there is no server to keep patched. For a dashboard that gets read far more than it changes, that is the right trade.

- The examples directory covers real integrations: DuckDB, Arrow, Parquet, Databricks, Elasticsearch, Airtable, deck.gl, and Mapbox. Each one is a small working project you can copy from, which matters more than the README suggests.

- Build-time loaders mean the data is only as fresh as the last build. Anything that needs live numbers has to schedule rebuilds in CI, and the README does not mention that trade-off. You find it in the docs.

- Non-JavaScript loaders shell out to whatever interpreter or CLI is on the build machine's PATH. Pinning Python, DuckDB, or other tool versions in CI is your problem, not the framework's.

- The README is almost entirely links. Anyone deciding whether to adopt this from the repo page learns nothing about the reactive model or the loader contract, and has to go to the docs site to find out.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →