Colophon
How this thing got made.
The story:
This site exists because portfolios that look like everyone else's don't get you the job you actually want. It was built in-house — meaning, by me — over too many late nights, with obsessive attention to the things most people skip: type hierarchy, token discipline, accessible contrast, and whether the hover states feel right.
No Webflow. No template with the serial numbers filed off. Just a well-reasoned design system and the stubborn belief that the craft of the artifact should match the craft being advertised. If I'm going to claim I sweat the details, the details had better hold up to a right-click.
Specifications:
- Framework: Astro v5 — static output, zero JavaScript shipped by default.
- Language: TypeScript, strict mode. No
any, no exceptions. - Content: Three Zod-validated collections (résumé, work, thinking). The frontmatter is the contract; a missing field fails the build instead of shipping
undefined. - Styling: CSS custom properties — a hand-rolled design-token system. No Tailwind, no CSS-in-JS, no utility soup.
- Type scale: A fixed 11→40px step table on a 4px spacing unit. Headings use
clamp()so they breathe between phone and desktop. - Color: Warm-paper palette in light and dark, defined as hex tokens; OKLCH does the alpha mixing for subtle accents and shadows. Not one hardcoded color outside the token blocks.
- Typefaces: Instrument Serif (italic) for anything above ~24px; DM Sans (variable, 300–600) for everything else. Served from Google Fonts.
- Accessibility: WCAG 2.2 AA as the floor: semantic HTML, real focus rings, keyboard-operable everything, and
prefers-reduced-motionhonored throughout. - Icons: Drawn by hand as inline SVG — including the bow tie, which is non-negotiable. No icon-font dependency.
- The résumé PDF: A real PDF upload will replace the previous client-side generator. The client-side jsPDF approach was removed because it did not produce consistent output across browsers.
- Build tooling: Chrome headless plus ImageMagick render the social card and the entire favicon set from HTML sources. A post-build script asserts guardrails on every build.
- Design & assist: Figma for layout and component thinking. Cursor and Codebuff for implementation; Claude and Perplexity for research and sharpening the copy. The opinions are mine.
- Hosting: A folder of static files that runs on any host — Netlify, Vercel, Cloudflare Pages all work without changes.
- Built & designed by: Griffin Kelton, in Clayton, North Carolina.
- No templates were harmed in the making of this site.
What you can do about it:
If something feels off — a contrast ratio that's a hair short, a layout that buckles at some unusual viewport, a typo in these very specs — I genuinely want to know. Send it to griffin.kelton@gmail.com. There's no handsome reward waiting, but you'll have my sincere appreciation and a fix on the next build.