8 components

Components

The pieces that actually recur, built from tokens rather than ad-hoc values, and rendered here through the same components the site uses.

Micro-labels

The single strongest through-line in all four reference sites, without exception: mono, uppercase, wide tracking, small, quiet. Defined once as a utility so it cannot drift.

Experiment 04ShippedCurrentlyLab notes2026 · 3.41 s · 0.35 KiB

Project card

Where an employer decides whether to click. Outcome, name, what it is in one sentence, stack — no adjectives.

Post list item

Chronological, scannable, quiet. The blog index is not a place for display type.

Experiment row

The same row on the lab index. Number over project, set apart; status in a fixed-width column so every description wraps at the same point.

Code block

A primary visual element on a dev blog, not an afterthought. Expressive Code, with its frame, border and background bound to the palette tokens — so it re-skins with the rest of the site instead of sitting in it like a foreign object.

deploy/cloudflare/wrangler.jsonc
{
"name": "reys-lab-web",
"compatibility_date": "2026-09-19",
"assets": {
"directory": "../../apps/web/dist",
"not_found_handling": "404-page"
}
}
Terminal window
pnpm --filter @reys-lab/deploy-cloudflare deploy

Prose

The other half of the job. Marketing energy on the home page, a good reading environment here — measure held to roughly 68 characters, calmer type, less chrome.

Astro builds two ways. Static output emits plain HTML, CSS and JavaScript that any host on earth can serve. Server output needs an adapter, and an adapter is a build-time plugin that compiles the site into one vendor’s runtime format.

That puts the vendor inside the application package, underneath everything, where no amount of deployment wrapping can reach it. The usual way this happens is not a decision at all: a site is static except for one contact form, the form needs a server, and the whole site follows it into a runtime it can never leave. So the rule is static output, no adapter, and anything that genuinely needs a server becomes its own deployable.

Timeline node

The spine of /cv. Years are mono and small, set left of the line inside the text column; the line is the only place a bright colour runs vertically.

  1. 2026 —

    Building Rey’s Lab

    Personal

    Astro, Tailwind, Cloudflare. A portfolio that is also the work sample.

    ProjectsRey’s LabGrounder
  2. 2024 – 2026

    Senior Frontend Engineer

    Placeholder Company

    React and AWS. Design systems, build pipelines, and the odd backend.

    ProjectsRookie Trader
  3. 2021 – 2024

    Frontend Engineer

    Placeholder Company

    Where the habit of writing the tradeoff down started.