The Falcon Bench report page, extracted from the Falcon marketing site into a
standalone Next.js app. The report is the site: / renders the full benchmark
page: headline metrics, every comparison table, the quality-vs-cost plot and
the 506-case RAG evaluation.
- Next.js 16 (App Router, Turbopack) with React 19
- No CSS framework: a custom-property token layer in
src/styles/global.cssplus the page's ownsrc/views/benchmarks.css - Fonts are self-hosted from
@fontsource*packages so the production CSP can keepfont-src 'self'
pnpm install
pnpm dev # http://localhost:5173pnpm build type-checks with tsc --noEmit before building; pnpm start
serves the production build.
If pnpm install stops with ERR_PNPM_IGNORED_BUILDS: esbuild, run
pnpm approve-builds once and pick esbuild.
src/
app/ route, metadata, robots, sitemap, 404
views/ BenchmarksPage.tsx + benchmarks.css
data/ benchmarks.ts, every table and number, as data
components/ Icon, Reveal, SpotlightCard, SiteHeader, ShaderParticles…
styles/ fonts.css, global.css (tokens), header.css
All benchmark numbers live in src/data/benchmarks.ts. Edit the data, not the
markup; the page renders whatever the tables declare, including which cell in
each row is marked best.
Live at https://homingos.github.io/Falcon_Benchmark/, published by
.github/workflows/deploy.yml on every push to main.
The build is a static export (output: 'export'), so the whole site is plain
HTML/CSS/JS in out/, with no Node server involved. Because Pages serves the repo
from a sub-path, the workflow builds with NEXT_PUBLIC_BASE_PATH=/Falcon_Benchmark;
update that value if the repo is renamed or moved behind a custom domain. The
static export also means the app can set no response headers, so there is no
CSP here; Pages does not allow custom headers regardless.
One-time setup in the repo: Settings → Pages → Build and deployment → Source: GitHub Actions.
To check the deployed shape locally:
NEXT_PUBLIC_BASE_PATH=/Falcon_Benchmark pnpm build
(cd .. && python3 -m http.server 8000) # then open /Falcon_Benchmark/