Wesley Bard
ThemeLight, dark, or match your computer.The sun is light, the moon is dark, and the middle one follows your computer's setting. Your choice is saved in this browser.Now: Match my computer
Design system

How wesleybard.com is built.

The site wears the same design system as the tools I build at work: one set of colours with a dark twin for each, three typefaces, and a handful of building blocks. Everything below is drawn with the site's own styles, so switching the theme at the top shows both. One stylesheet, app/design-system.css, carries all of it.

Colour

Colours are used by name only: var(--accent), never #0f4c5c. Each token has a light and a dark value, shown under its name. Text on an accent fill uses --on-accent, never white.

Surfaces

--bgThe page#f4f6f8 · #10161c
--paperCards, prints, the header and footer#ffffff · #171f27
--ruleBorders#cfd6dd · #34414d
--rule-softRow lines, chips, quiet fills#e4e9ee · #26313b

Ink

--inkHeadings and text#1b2430 · #e6ebf0
--ink-2Secondary text#566371 · #9aa7b3
--ink-3Labels and captions#64707c · #7f8d9a

Accent

--accentLinks, buttons, figures#0f4c5c · #7ec4d4
--accent-softHover and the pressed theme button#e2eef1 · #1b3038
--accent-deepButton hover#0a3540 · #a5dbe7
--on-accentText on an accent fill#ffffff · #0b1e24

Meaning

--coreUp, on, playing#1f6f3f · #7fcf9a

Prints

--tapeTape on a printrgba(255, 226, 150, .72) · rgba(224, 176, 90, .40)

Arcade

--screenTetris's screen, dark in both themes#121a22 · #121a22
--screen-inkFigures on the screen#e6ebf0 · #e6ebf0
--screen-ink-2Labels on the screen#8d9aa7 · #8d9aa7

GitHub map

--h0No contributions#e4e9ee · #26313b
--h1A few#b6d6de · #1d4550
--h2Some#78afbd · #2b6a79
--h3Many#3a8095 · #4f9aac
--h4The most#0f4c5c · #8fd0de

Type

Source Serif 4 for the name, headings, tile names and figures; IBM Plex Sans for text; IBM Plex Mono for eyebrows, captions, tags and the subtitles under tile names.

Name · serif 58Wesley Bard
Section · serif 26Personal
Tile name · serif 20Knobdeck
Figure · serif 24Lockheed Martin
Text · sans 15A desk controller on a round touchscreen you turn.
Eyebrow · mono 11AUTONOMOUS AI AGENTS
Caption · mono 11wbuf81/esp32-knobdeck

The header

Paper bar with a bottom rule: the wordmark (Bard in the accent), Projects and Connect, and the theme switch, the same three-way pill as the work tools: light, match my computer, dark. The choice is saved in this browser and applied before the page paints, so it never flashes. On a phone the bar wraps instead of hiding behind a menu. It's live at the top of this page.

Building blocks

Buttons, tags and chips

Private repoFeatured buildClaude Code sessions

The stat strip

Then
Lockheed Martin
Engineer
Now
Newfold Digital
Governance, Risk & Compliance
Still
Building stuff
Nine builds at work, nine at home

A print

A photo on a paper border with a wide bottom lip and a mono caption, held on with tape and tilted by hand. The tilt and tape come by position from two lists in lib/projects.ts, so a row looks scattered whatever moves. Photos stay in full colour.

OSCAR, a Bernese mountain dog, at a desk with two monitorsOSCARBernese mountain dog

Tiles

A print standing over the top of its card. A tile says what the thing does and what it runs on. Personal projects add a footer: the board, or what it's written in, and GitHub when the repo is public.

LUCY, a pit and lab mix, at a deskLUCYPit and lab mix

LUCY

Private repo
Litigation Utility for Conflicts on Your Brand

Polls a domain-name watch service every couple of hours for newly registered look-alike domains, works out which brand in the portfolio manages each one, and emails Legal a digest with Take action and Dismiss buttons — then follows every actioned domain until it's gone.

Screenshot of KnobdeckKnobdeckESP32-S3

Knobdeck

Open source
wbuf81/esp32-knobdeck

A desk controller on a 360×360 round touchscreen you turn. It plays your music behind seven beat-reactive visualisers — and the moment a Teams call starts, the screen becomes your mic and camera as two giant buttons: red means you are on air, tap a half to toggle it.

The featured build

A big print over the left edge of its panel. FEATURED in lib/projects.ts picks it, and it is left out of its group below.

Screenshot of Stream Deck Neo TakeoverStream Deck Neo TakeoverNode
Featured buildOpen source

Stream Deck Neo Takeover

wbuf81/streamdeckneoclaude

A Node daemon that owns the USB device outright and draws every pixel itself, with the Elgato software removed from the picture. Seven live pages — Claude Code sessions, Codex tasks, Spotify, stocks, weather, football, machine vitals — and a key press acts on the thing it shows.

View on GitHub →
Seven live pages
Claude Code sessionsCodex tasksSpotifyStocksWeatherFootballMachine vitals

The arcade print

Tetris on a dark screen, with Score and Lines beside it. It plays itself in greys until someone presses Play, then takes the arrow keys and space, and only then.

Score—
Lines—
Tetris
Wesley BardWesley Bard

The GitHub map

@wbuf81

GitHub activity

Open GitHub →
Most projects are in private repositories.

Link cards

Writing

  • A tile says what a thing does and what it runs on. Never repo statistics: no line, test or commit counts.
  • Public copy names no client, vendor, regulator, brokerage or figure: “a domain-name watch service”, not the vendor's name.
  • Counts are computed from the project lists and spelled out (“nine builds”), so they can't go stale.
  • The homepage is about the building, not a résumé. Keep the top terse; no taglines.
  • Plain English, from the reader's side of the screen.

Using it on a page

  • The root layout loads the stylesheet. Put the page in <main className="wb wb-page"> and use the classes shown here, with the shared Nav and Footer.
  • A new colour goes in the stylesheet, light and dark, and in TOKENS on this page, or the tests fail.
  • Every block is scoped under .wb, so pages with their own look are untouched.
  • Check both themes and a phone (390 px wide) before shipping.