Andrew Hoag
Directing the Build
Client
Andrew Hoag
Role
Direction · Design · Creative Technology
Disciplines
Web & Interactive
Tools
Claude Code, Framer, Astro, React, TypeScript, Tailwind CSS, Netlify
#01
Discovery
From 2020, I coded and maintained my portfolio site with Gatsby, React and Netlify. The more I built, the heavier the upkeep got. Constant package updates, breaking changes and new React features made it hard to focus on the work I wanted to show.
I wanted to focus on content and design with minimal coding, so in 2026 I started a rebuild in Framer. But after building the design system, page layouts and site functionality, I missed the control and flexibility of a hand-coded site.
That friction pushed me to stress-test Claude Code and see whether it could ease the load of self-maintained code.
With a fully functional Framer site and tons of context around my personal brand and design system, I scoped the rebuild like any other client project:
- A highly detailed brief with specific technical requirements. A living CLAUDE.md defines the stack, conventions and hard rules before a line of code is written, and Claude Code reads it at the start of every session.
- Scoped access. The AI got read-only tools: Framer through an MCP bridge, and the current Astro, React and site-package docs through another. Nothing could write to the source design, and the code written was always to framework standards and best-practices.
- The design system is fundamental and uniform across the site. Colors, type and content structure were pulled from the existing Framer project, not reinvented. I provided Lottie animations and additional images, videos and motion content as needed.
- Every change reviewed. Small commits, each one checked in a browser before it moved forward. For the initial commits, I reviewed most of the code and site structure, noting any issues or preferences to Claude.
The brief and the guardrails: what the AI was told, and what it was allowed to touch.
#02
Design
With the Framer Model Context Protocol, I connected Claude Code directly to the Framer rebuild itself. It read the real color styles, text styles, fonts and CMS fields, and those became the site's global design tokens. CMS fields became a typed content schema, so every case study follows the same contract, and data can be passed programmatically to things like SEO metadata, image alt text, and build-time OpenGraph share images.
- Systems over pages. Two content collections drive every route. Adding a project is one folder and one file.
- Motion for emphasis (and a little showing off). Interactivity ships as small React islands: the lightbox, the filterable masonry grid, the nav menu and a Lottie hero. Everything else is static HTML.
- Always current with official documentation, even with breaking changes. Model knowledge of a framework goes stale fast. The brief tells Claude Code to check the current Astro docs instead of relying on memory.
- Crafting accessibility and reducing copywriting fatigue. I built a small tool on Claude's API to expand my shorthand descriptions into full alt text for every project image, then refined each one before it shipped.
The original Framer site, the tokens pulled from it, an accessibility pass where Claude expanded my shorthand and I refined the results, and the hand-built Lottie and menu animations on mobile.
#03
Delivery
41 commits over 17 days took the site from an empty repo to launch. It carried over 11 case studies, 20 dailies and hundreds of optimized project images. My legacy Framer URLs got permanent redirects via a netlify.toml file, so no inbound link or search ranking was lost. Build-time share images, a sitemap, favicons and Netlify Forms covered SEO, search and CRM/lead generation.
The real payoff is just how easy the site is to maintain, update, and scale. Global changes are simple and fast, utilizing TypeScript files for site-wide structure and project metadata. To add a new case study, I duplicate a folder template, write out a markdown file, nest media alongside it, and the system handles the rest.
Claude and other LLMs like it are incredibly useful, but this experience brought a few of my views on them into focus:
- Knowing how to talk about code is key to effective output. Using informed language about high-level architecture, scalability, and accessibility made a world of difference. Specificity, clarity, and a foundational vision for the project were instrumental.
- MCPs aren't just useful, they're essential. Knowing Claude was being held to specific standards and guidelines brought consistency and quality, while reducing my concern about output.
- Talking to a chatbot for hours isn't my idea of great collaboration. Across the board, I was impressed by the speed and scale of the results. But the magical feeling I get when a human collaborator creates something unexpected? That was missing, and I feel it's essential to sustaining a career of creativity.