Skip to content
Work · Case Study

22 widgets, nothing off a shelf.

A 13-page marketing site where every chart, gauge and map was written from scratch, because the widgets are the product demo and a stock chart cannot demo a product nobody has built before.

Baseline Marketing: the BASELINE wordmark in white with a teal underglow on a dark navy grid, over the counts 13 pages, 22 custom widgets, 0 UI kits.

Baseline is my own product: a political speech analysis tool that runs the same statement through Claude, GPT and Grok independently and treats their disagreement as the signal. Its marketing site had a problem most marketing sites do not. There was nothing to screenshot that would mean anything, and no stock chart that shows four AI models arguing.

So the site does not describe the product. It runs it. The features page is a working demo of the production app interface, and every visualisation on it was built from nothing: radar charts, signal gauges, heatmaps, timelines, constellation maps.

Twenty-two of them, across thirteen pages, with no chart library, no UI kit, no CSS framework and no component library anywhere in what the browser downloads.

22 custom interactive widgets
13 pages, all statically rendered
0 chart libraries or UI kits loaded
A+ Mozilla Observatory, HSTS preloaded

The build

Stack
Next.js app router · TypeScript strict · Vercel behind Cloudflare · zero UI dependencies
Scope
13-page marketing + portfolio site for my own product, Baseline. 22 custom interactive widgets built from scratch (radar charts, timelines, signal gauges, heatmaps, constellation maps). No chart libraries, no Tailwind, no UI kits.

Why nothing came off a shelf

Reach for a chart library and you get its opinions along with its code. Its axis conventions, its tooltip, its animation curve, its idea of what a data point is. That is fine when you are plotting revenue by quarter. It is useless when the thing you need to show is three language models scored against each other on one sentence, because no library has a component for that, and the closest thing it has will quietly reshape your product into something it already knows how to draw.

Writing them meant every widget could be the exact shape of the idea underneath it. The Framing Radar is a radar because framing genuinely has axes. Crossfire is a split view because two models genuinely disagree. Constellation Nav is a node map because the relationships genuinely are a graph. Each one is a named feature of the product, not decoration on a page about the product.

The second effect is weight. Twenty-two interactive visualisations would normally mean a large charting dependency plus a component library plus whatever they both pull in. This site ships nine JavaScript chunks total and the visuals are inline SVG, which the browser already knows how to draw.

Checked, not claimed

Anyone can write no dependencies on a portfolio page. So before publishing this, I pulled every JavaScript bundle the homepage requests and searched all nine of them for the names: chart libraries, D3, Highcharts, Plotly, component kits, Tailwind, Bootstrap. Nothing. The one hit was appBootstrap, which is the Next.js router's own hydration function and has nothing to do with the CSS framework of the same name.

That is a small thing to do and it is the whole difference between a claim and a fact. It is also the same check I run on client sites, which is why the audit tool on this site exists at all.

What the site is made of

Next.js with the app router and strict TypeScript, statically rendered, served from Vercel behind Cloudflare. Strict transport security with preload, frame options locked to same-origin, Lighthouse in the high nineties on mobile and an A+ on Mozilla Observatory. Those two are measured live on the wall alongside every client site, on the same schedule and with the same tools, because a portfolio that grades itself more gently than its clients is not a portfolio.

Thirteen pages covers features, methodology, ethos, pricing, a page about what the product deliberately does not do, a build page, press, support, and the four legal documents an app on the stores has to have. It is the clearest answer I have to why build custom, because the parts that make it worth looking at are exactly the parts no template could have produced.

Custom websites and apps for Oregon coast businesses. Modern stack. Days for sites, weeks for apps. Free consult to scope your project.

Consult Policy
  • Bandon: free in-person or video
  • Coos & Curry counties: free 30-min video
  • In-person up to 1.5 hours away: $250 deposit, credits to project on signing
  • In-person up to 2.5 hours away: $400 deposit, credits to project on signing