clairemull.com is a site I designed and built myself, plus a one-page résumé kept in sync with it. It presents the work. It counts visits, and stores nothing about who the visitors are. Here's the whole thing on one page.
A portfolio site and a résumé, presenting three pieces of work: bakebook (a product I designed and shipped to the App Store), How I use Claude (the system I build with, and where I stay in control), and Blackbox Sandwiches (service design for a real business). The site and the résumé say the same thing in two formats.
The old site was a Squarespace template. I rebuilt it as code I own, so the design isn't boxed in by a template and the pages are exactly what I want them to be. The domain stayed the same the whole way through; only what sits behind it changed.
| Part | What runs it | Why |
|---|---|---|
| Framework | Next.js 16 · React | Modern pages, components I can reuse, real control. |
| Language | TypeScript | Catches mistakes before they ship. |
| Styling | Hand-written CSS | One stylesheet of design tokens and classes I named. Tailwind is installed, but only its browser reset is used (the rules that clear each browser's default styles). No utility classes. |
| Rendering | Static generation | Every page built ahead of time. Fast, cheap, nothing to break at request time. |
| Backend | none | No database, no server logic, no accounts. It's a site, not an app. |
| Hosting | Vercel | Builds the static site and serves it on the domain over HTTPS. |
| Visitor counts | Vercel Analytics | Page views and where visitors came from, seen only by me in the Vercel dashboard. No cookies, so no cookie banner. Added to the code 30 Sep 2026; switched on in the dashboard and counting since 4 Oct 2026. |
| Old links | next.config.ts | Redirects send old Squarespace addresses (like /blackbox-sandwiches) to their new pages. Anything else lands on a branded broken-link page: the homepage with “This page doesn’t exist” above the name. |
| Source | GitHub (private) | Version history for every change. |
| What | Where it lives | Why there |
|---|---|---|
| The pages | site/app/ React, in the repo | Written as components, then built into plain static HTML at deploy. The code is the content. |
| Images & the résumé PDF | site/public/ | Served as static files straight from Vercel's CDN, close to whoever's visiting. |
| Every change, over time | GitHub | Private repo; full history, so nothing is ever lost and every edit is traceable. |
| Anything about a visitor | only counts | No database, no accounts, no logins. Vercel Analytics counts visits without cookies and without knowing who anyone is; nothing else is kept. |
site explicitly. A CLI deploy records the root as ., which breaks the moment Git is connected and Vercel clones the repo root. Documented so it's never a mystery again./studies stay out of production.