← All articles
How Hermes Agent Redesigned Both My Websites featured image

How Hermes Agent Redesigned Both My Websites

I handed my entire two-site redesign to an AI agent — Hermes Agent. One cohesive design system, zero lines of code written by me.

July 6, 2026·Jacky Fan·6 min read

The Problem

I had two websites — jacky.fan (my portfolio) and blog.jacky.fan (my blog). Both worked, but there was room for improvement: daisyUI defaults, inconsistent styling between the two, no dark mode, and a 2,500-line CSS file that was hard to maintain. They looked like they belonged to two different people.

Worse, I'm a developer, not a designer. I don't have the eye for colors, spacing, or typography.

Old portfolio — daisyUI defaults
Old blog — different style entirely

Every time I tried to "fix the design" myself, it got messier.

So I tried something different: I handed the entire revamp to an AI agent — Hermes Agent.

I wanted to test the limits of Hermes Agent — to see how far an AI agent could go in a real, multi-site web design and development project.

Phase 1: Design Prototypes (the "Creative Director")

I have a Raspberry Pi 5 (rpi5-1) running another instance of Hermes Agent. I decided to use it as my design consultant — a separate agent focused only on visual exploration, not production code.

I first tried asking the agent to design in Figma, but it couldn't connect — so it built a prototype in raw HTML/CSS instead. In hindsight, this was better: I could open the prototype in my browser instantly, no Figma account needed, no export step. Just a web page I could scroll through and react to.

How I briefed it

I opened a session with rpi5-1's Hermes Agent and said:

  • What aesthetic direction? → "MUJI feeling"
  • What's important to keep? → Nuxt 3, Payload CMS
  • Color palette? → Indigo and warm off-white

Then it built a standalone prototype in ~/Project/new-blog-prototype/, served it via Docker, and I opened it in my browser.

Left image featured image
The Blog Website Prototype Design

The MUJI-inspired blog prototype — raw HTML/CSS, no framework I gave feedback like "more graphics," "larger text," "like pretty PowerPoint slides" — and it iterated.

Then the portfolio

Once the blog felt right, I gave rpi5-1's agent a harder brief:

"Redesign jacky.fan for a modern, eye-catching website, while keeping similar style to my blog.

It studied the blog prototype's design DNA, researched modern portfolio designs, and designed the full site — hero, about, projects, contact — all in raw HTML/CSS under ~/Project/jackyfan-prototype/. Again, Docker-served, browser-reviewed, iterated.

Left image featured image
Portfolio prototype — warm editorial, geometric accents

Why this worked

  • No production code, no CMS, no SCSS architecture — just pure visual design
  • I could say "good job" or "try again" without worrying about breaking anything

The whole design phase took about 3 to 4 days of casual back-and-forth. What surprised me most: the agent asked thoughtful design questions on its own, and it could study reference websites I pointed it to — pulling visual ideas from them into the prototype.

Phase 2: Production Build (the "Developer")

With approved prototypes as the target, I switched to a different Hermes Agent session on my local machine. This agent's job: turn the prototype's visuals into real, production-grade code.

The agent did the heavy lifting

I described what needed to happen and the agent executed:

A project detail page, fully CMS-driven — Overview, Features, Tech Stack, Screenshots, CTA

For jacky.fan (Next.js 16):

  • Split 2,528-line globals.scss into 22 modular SCSS partials — tokens, layout, typography, buttons, animations, every page section. All at once, zero breakage
  • Built CMS-driven project pages with rich content blocks (overview, feature grid, tech stack, screenshots, CTAs)
  • Populated 6 projects into Payload CMS via scripts that logged in, patched collections, and revalidated caches
  • Added dark mode, Framer Motion animations, View Transition API page transitions, contact form with reCAPTCHA

For blog.jacky.fan (Nuxt 3):

  • Applied 13 SCSS partials mirroring the portfolio design system
  • Built code highlighting with copy button, image lightbox, RSS feed, full-screen mobile menu
  • Generated 8 article thumbnails — warm SVG designs with brand-specific decorative motifs

For both:

  • The agent SSH'd into rpi5-1 to run Docker commands, migrated content between servers, and made REST API calls to Payload CMS
  • For visual verification, it used a background browser — navigating to pages, taking screenshots, comparing localhost vs production pixel by pixel

Communication was everything

The interaction was surprisingly natural. I'd say things like:

"The button on production isn't black and rounded like localhost. Please check all buttons and fix."
"Remove the Utterances part. Replace the Smooth Animations section with something else."
"The 404 page content is invisible because of the reveal animation. Fix it."

Each time, the agent investigated, found root causes, fixed them, and showed me the result. No explaining file locations, no writing code — just describing what I wanted.

Phase 3: Polish (the Unglamorous 80%)

Once the big pieces were in place, we entered the polish phase. This is where most projects stall because the work is tedious — but the agent handled it.

Most issues were caught and fixed in small iterations, so nothing particularly memorable beyond the table above. The agent just kept fixing things as I pointed them out.

  • daisyUI button overrides: Production looked different from localhost; the agent compared both visually and fixed cascade issues.
  • Responsive breakpoints: Tablet layout broke (grids collapsed at 1024px); moved breakpoint to 768px.
  • 404 page invisible: IntersectionObserver reveal effect hid the content; fixed it, it regressed, then fixed again.
  • Nuxt 3 caching: useFetch returned stale data on SPA navigation; root-caused and fixed.
  • Payload CMS login: serverURL, cookiePrefix, and CSRF issues blocked admin login from non-localhost; fixed all three.
  • Content migration: Bulk-migrated all articles and projects from localhost CMS to rpi5-1 production.

Most issues were caught and fixed in small iterations, so nothing particularly memorable beyond the table above. The agent just kept fixing things as I pointed them out.

What I Learned

The good

  • The agent understood context. It remembered the design tokens, SCSS structure, and CMS quirks across sessions. I never had to repeat myself
  • It debugged autonomously. When things broke, it investigated without asking "what should I do?" — it read logs, traced errors, tested fixes
  • It did the boring work. Splitting 2,500 lines of CSS, writing CMS migration scripts, comparing pixels between sites — hours of human work, done in minutes
  • Natural language was enough. I didn't write a single line of code for this revamp. I described outcomes, not implementations

The not-so-good

  • First-time setup was manual. Environment variables, SSH keys, Docker access — I had to set these up myself before the agent could work
  • Visual taste needed steering. Early designs were technically correct but lacked personality. I had to say "warmer," "more editorial," "less corporate"
  • It could over-engineer. Sometimes proposed complex solutions when a simple CSS fix sufficed. Iteration was necessary
  • API costs add up. OpenRouter was convenient but more expensive. I later switched to DeepSeek's direct API to reduce costs — worth considering if you plan to use an agent heavily.

The Result

Both sites now share a cohesive design: warm off-white (#faf9f5), blue accent (#3b5cb8), Inter font, geometric decorations, responsive layouts, dark mode. They feel like they belong to the same person.

jacky.fan (Next.js 16 + Cloudflare Pages) — portfolio with CMS-driven projects, animations, 3D elements, contact form.

blog.jacky.fan (Nuxt 3 + Docker on rpi5-1) — editorial blog with Payload CMS, code highlighting, image lightbox, RSS.

All designed and built by an AI agent. I just told it what I wanted and steered when needed.

Left image featured image
Payload CMS admin on rpi5-1

Payload CMS admin on rpi5-1 — self-hosted, Docker Compose, accessible from anywhere on the network

Screenshots

Before: The Old Designs

Old portfolio — daisyUI defaults, Nord theme, single-page layout
Old blog — same daisyUI look, different site entirely

Prototypes Built by rpi5-1 Agent

MUJI-inspired blog prototype — warm off-white, indigo accents, Inter font
Portfolio prototype — same design DNA, lifted into portfolio territory

After: The Final Production Sites

New portfolio — custom SCSS design system, dark mode, Framer Motion
New blog — same palette, same typography, one cohesive identity

Would I Do It Again?

Yes. The result is better than anything I could have built solo, and the process was faster than hiring a designer-developer team. The key insight: the AI is the executor, I'm the director. My job was taste, decisions, and feedback — the agent handled everything else.

For anyone considering this workflow: be specific in your feedback. "Warmer," "more editorial," "match the other site" — these short, directional cues work better than long specifications.

I'd definitely recommend this approach. The AI-agent workflow offloaded most of the boring work and opened up opportunities in areas outside my own expertise — like design, which I had always struggled with. You don't need to be a designer to end up with a well-designed site. You just need to know what you like and be able to describe it.

Continue ReadingView all articles →
I migrated my websites into Payload CMS featured image
CMSJune 14, 2026

I migrated my websites into Payload CMS

Running Minecraft Server with Docker and docker-compose featured image
DevOpsFebruary 1, 2024

Running Minecraft Server with Docker and docker-compose

How to apply Google's font with NuxtJS and Tailwind featured image
FrontendAugust 13, 2023

How to apply Google's font with NuxtJS and Tailwind

Previous ArticleI migrated my websites into Payload CMS