{"id":51032575,"url":"https://github.com/vortex-data/benchmarks-website","last_synced_at":"2026-06-22T02:01:19.997Z","repository":{"id":365778319,"uuid":"1272378898","full_name":"vortex-data/benchmarks-website","owner":"vortex-data","description":"Benchmark Results for Vortex","archived":false,"fork":false,"pushed_at":"2026-06-18T20:23:14.000Z","size":1291,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2026-06-18T22:06:12.526Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vortex-data.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-17T14:52:43.000Z","updated_at":"2026-06-18T20:23:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/vortex-data/benchmarks-website","commit_stats":null,"previous_names":["vortex-data/benchmarks-website"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/vortex-data/benchmarks-website","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vortex-data%2Fbenchmarks-website","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vortex-data%2Fbenchmarks-website/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vortex-data%2Fbenchmarks-website/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vortex-data%2Fbenchmarks-website/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vortex-data","download_url":"https://codeload.github.com/vortex-data/benchmarks-website/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vortex-data%2Fbenchmarks-website/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34630770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-22T02:00:06.391Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-22T02:01:16.973Z","updated_at":"2026-06-22T02:01:19.973Z","avatar_url":"https://github.com/vortex-data.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!--\nSPDX-License-Identifier: Apache-2.0\nSPDX-FileCopyrightText: Copyright the Vortex contributors\n--\u003e\n\n# benchmarks-website\n\nThe public home for **Vortex benchmark results** — and the data pipeline behind\nit. Benchmark jobs in the [`vortex-data/vortex`](https://github.com/vortex-data/vortex)\nmonorepo emit one measurement per commit; this repo stores those measurements\nand renders them as time-series charts — one per `(benchmark, dataset, …)`\ndimension tuple, plotted across the Vortex commit history.\n\n**Live at [bench.vortex.dev](https://bench.vortex.dev).**\n\n\u003e This repo owns the **storage, the read services, and the ingest contract** —\n\u003e not the benchmark runs. The emitters live in the monorepo and stay there.\n\n## How it works, in one glance\n\n```\nmonorepo CI  ──emit──▶  database  ──read──▶  charts\n (the runs)            (this repo)          one per (benchmark, dataset, …),\n                                            x-axis = the Vortex commit history\n```\n\nThe site has been rebuilt twice, and all three generations run side-by-side in\nproduction while the final cutover finishes — they share one emitter output, so\nthe same measurement feeds every generation. Only the v3 and v4 source lives in\nthis repo; v2 is deployed elsewhere:\n\n| Gen | Stack | Storage | Status |\n|---|---|---|---|\n| **v2** | Vite/React SPA on Cloudflare | static S3 dump | **live** at `bench.vortex.dev` (deployed elsewhere); retired after cutover |\n| **v3** | Rust `axum` + `maud` on EC2 | DuckDB on local disk | experimental; an emit target only |\n| **v4** | Next.js App Router on Vercel | AWS RDS Postgres | the **forward stack**; `develop` = production at `benchmarks-website.vercel.app` |\n\nEach generation traded the previous one's main weakness: v2→v3 moved grouping\nfrom read-time-in-the-browser to ingest-time records in a real analytical store;\nv3→v4 moved off a self-managed box onto managed serverless. The full story — data\nflow, why there are three generations, and the design decisions and tradeoffs\nbehind the current stack — is in\n[**`docs/architecture/`**](docs/architecture/README.md). **Start there.**\n\n## Find your way around\n\n| If you want to… | Go to |\n|---|---|\n| understand the whole system | [`docs/architecture/`](docs/architecture/README.md) |\n| know the emitter ↔ ingester wire format | [`CONTRACT.md`](CONTRACT.md) |\n| work in this tree (env vars, conventions, footguns) | [`AGENTS.md`](AGENTS.md) |\n| deploy, set up secrets, or run a data refresh | [`docs/runbooks/`](docs/runbooks/) |\n| dig into one component | the per-directory READMEs in the layout below |\n\n## Layout\n\n| Path | What it is |\n|------|------------|\n| `web/` | **v4** — the Next.js read service on Vercel ([README](web/README.md)). |\n| `server/` | **v3** — the Rust `axum` ingest/read server ([ARCHITECTURE](server/ARCHITECTURE.md)). |\n| `migrate/` | `vortex-bench-migrate`, the v2→v3→v4 migration tool ([README](migrate/README.md)). |\n| `migrations/` | the Postgres schema — SQL migrations + the `_applied_migrations` ledger. |\n| `infra/` | AWS provisioning for the hosted Postgres + IAM ([README](infra/README.md)). |\n| `ops/` | the legacy v3 host deploy runbook + scripts ([README](ops/README.md)). |\n| `scripts/` | the schema-deploy runner and golden fixtures. |\n\n## Quick start\n\nThe forward stack is the v4 web app:\n\n```bash\n# v4 web app (Next.js). Needs BENCH_DB_* env for a real database — see web/README.md.\ncd web \u0026\u0026 pnpm install \u0026\u0026 pnpm dev\n```\n\nWorking on the legacy Rust stack (the v3 server and the migrator):\n\n```bash\n# v3 server (DuckDB) + workspace tests:\nINGEST_BEARER_TOKEN=dev cargo run -p vortex-bench-server\ncargo nextest run -p vortex-bench-server -p vortex-bench-migrate\n\n# Build a fresh DuckDB from the v2 S3 dump:\ncargo run -p vortex-bench-migrate -- run --output ./bench.duckdb\n```\n\nSee [`AGENTS.md`](AGENTS.md) for the full local-dev and env-var contract.\n\n## Status\n\nThe split from the monorepo is **complete** — standalone build, CI, Vercel\ndeploy, OIDC schema deploy, and secrets all live here, and v4 serves the full\nbenchmark history. What remains is deliberately deferred (make v4 good before\ntearing anything down):\n\n- **Emitter / ingest cutover** — point the monorepo emitters at the v4 ingest\n  path (direct RDS write + cache revalidate) instead of the v2/v3 paths.\n  Cross-repo plan: [`docs/runbooks/emitter-ingest-cutover.md`](docs/runbooks/emitter-ingest-cutover.md).\n- **DNS cutover** — repoint `bench.vortex.dev` at v4 and make the Vercel\n  deployment public.\n- **Decommission v2 and v3** once nothing depends on them.\n\nUntil the emitter cutover lands, v4 data is refreshed by re-running\n`vortex-bench-migrate` (see [`migrate/README.md`](migrate/README.md)).\n\n## License\n\nApache-2.0. See the SPDX headers in each file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvortex-data%2Fbenchmarks-website","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvortex-data%2Fbenchmarks-website","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvortex-data%2Fbenchmarks-website/lists"}