Skip to content
Tyler King
Contact
All case studies Case study 1 / 5 · 2026

Building This Site and the CMS Behind It

A portfolio kept current through its own single-admin CMS, where every word on the page is editable and a change goes live without a rebuild.

Role
Design, build, and content
Stack
SvelteKit · Postgres · Netlify
Scope
App, CMS, analytics, design system
Year
2026
The problem

A portfolio has to stay current and prove its claims

A static site needs a rebuild for every edit, so the edits stop. A hosted CMS keeps content current but shapes it around its own model and its own editor. And a site that claims to be accessible and well structured has to demonstrate both on the page itself, where any visitor can inspect the result.

The constraints

One vendor, one person, no servers

Everything had to run on Netlify: serverless functions, Netlify DB for Postgres, Netlify Blobs for images, no persistent process and no file writes. One admin, so no user table and no roles. Every word on the public site editable, including labels and error copy. Secure by default, because the editor is reachable from the internet.

The approach

SvelteKit as the whole stack

Server loads read Postgres through Drizzle and render the public pages; form actions write. Zod validates every untrusted boundary from the contact form to the reorder payload. The CMS is thin routes over typed mutations: two singletons, five sortable collections with drag-to-reorder built once, a leads inbox with status, and a dashboard fed by a first-party event beacon with a real-or-mock data toggle.

The decisions

Derived state and role-based color

Nothing derivable is stored: section numbers, case indices, and reading order come from position. Tokens are primitives and the theme is the only place a role meets a mode; a contrast audit later split the accent into a fill step and a text step so both themes clear 4.5:1 without a second hue. Analytics are first-party and privacy-respecting rather than a third-party script.

The outcome

Editable in a minute, verifiable in the browser

Content changes go live without a rebuild. Both themes pass WCAG 2.2 AA, verified by script and by axe on every page. The design system is documented from the code it ships, and the site you are reading is the running proof.

Figures

Screens, diagrams, and documents from the work.

Admin dashboard with sample data
Admin dashboard with four stat tiles (3 unanswered leads, 14 leads this month, 52 resume downloads, 1.7% contact rate), a stacked column chart of leads over twelve weeks, and bar lists of top pages and referring sites.

Stat tiles and leads by week from the first-party event beacon, with the real-or-mock toggle set to sample data.