Open navigation
Back to Articles

August 2026 · 2 min read

A Git Tree Is Enough: Running a Public Benchmark Without a Database

Ditch the server-side database. Use a structured folder tree in Git as your source of truth and build a manifest for a static SPA.

Editorial cover for git tree as database benchmark architecture

Replace the database with a file-per-result git tree

Treating a Git repository as your database provides a transparent, immutable record of every benchmark execution. I commit each benchmark output as a distinct file within a predictable path structure like results/prompt/model/harness/date/.

This folder-based organization enforces reproducibility. Any contributor can verify the output by checking the raw file itself. Publishing a new result is a standard commit and push, removing the need for authenticated API endpoints or database write permissions.

I accept that my Git repository grows with every new result. For a solo-maintained project, the simplicity of a single source of truth is better than the complexity of managing server-side state.

Generate a manifest for client-side rendering

A build-time script is the bridge between raw filesystem files and a browseable user interface. My sync script traverses the results tree and writes a static index.json manifest. The client-side application fetches this single file to discover available results and render them in the browser.

Moving logic to a build step removes all server-side dependencies. You host the site on any static provider without needing a database connection or backend runtime. This shrinks the attack surface and ensures consistent performance.

The manifest is the only contract between the data and the rendering layer. When the tree is empty, the site renders empty states. This ensures the SPA remains dependency-free and identical across development and production environments.

The following snippet shows how I structure the manifest discovery in a minimal vanilla TypeScript client.

ts
async function loadManifest() {
  const response = await fetch('/results/index.json');
  const manifest = await response.json();
  return manifest;
}
architecturestatic-sitesdeveloper-experience

Sources

  1. What Is a Static Website? Definition, Benefits, and Examples
  2. Why database benchmarks need public data and queries | Jovan Popovic posted on the topic | LinkedIn
  3. Static Websites: The Future of Web Development

Related articles

Press ? for keyboard shortcuts