yodewang.com

yodewang.com

PortfolioDesignDevAI

Two weeks to rebuild my portfolio from Figma Sites to Nuxt, with AI in the loop throughout

Restructured the content system, componentized the layout, and wove AI tools throughout development, turning a static showcase into an interactive, maintainable portfolio.

Role
Designer + Developer (Independent)
Duration
Two weeks, part-time
Tools
Nuxt 4 · Nuxt Content · Tailwind CSS v4 · Claude Code · Codex · ChatGPT Image 2

Figma Sites got me online fast, but I wanted more

I started building my portfolio in late 2025, picking Figma Sites to move quickly. It delivered on the design-as-website promise, but after a while I started running into walls:

  • Adding language and theme switching was painful, requiring duplicate pages
  • Managing content would get unwieldy as the portfolio grew
  • Interactive effects took real effort and were inflexible
  • It didn't play well with AI tools

Static display was good enough, but anything beyond that felt like fighting the tool.

Time to move.

Old site (opens in a new tab)

Old Figma Sites portfolio

Picking the stack, building with AI

I'm comfortable with Vue.js, and I wanted to write case studies in Markdown and have them render automatically. That pointed me toward three tools:

  • Nuxt 4: Full-featured framework, native SSR, fast to get started
  • Nuxt Content: Write in Markdown, get rendered pages, content stays manageable
  • Tailwind CSS v4: Flexible token system, easy to build and maintain a design system

AI was in the loop the whole way through. I directed from the back:

Claude Code logo

Claude Code

  • Project architecture
  • Debugging
  • Copy editing
Codex logo

Codex

  • UI component work
  • Interaction details
  • Fast for iterative tasks
ChatGPT Image 2 logo

ChatGPT Image 2

  • Visual ideation
  • Generating reference images to converge on a direction

The division was figured out as the project went on. I ran Claude Code as the primary, Codex as support. Claude Code was solid early: setup, architecture, package installs. As the project grew and UI edits and bugs piled up, Codex was more likely to get it right in one shot. (Or maybe I just hit a Claude Code off-day 🤔)

To keep Claude Code oriented as the project grew, I kept CLAUDE.md updated throughout, logging the latest component naming rules, routing structure, and style conventions so the AI always had accurate context.

Since I was moving anyway, I pushed the visual direction further

Swiss Style was my direction from day one: grid, sans-serif, high contrast, whitespace, minimal palette. Restrained, functional, rational.

The old site had this tendency but never fully committed. The new one amplifies it: heavier weight contrast, full-bleed layout, a more distinct voice. View Design System (opens in a new tab)

Design System reference

Development in four stages

Stage 1 · Laying the foundation

Infrastructure work: Nuxt project setup, package installation, Prettier, and the Tailwind token system. This stage established the visual foundation everything else would build on.

Token and base style configuration

Stage 2 · Page skeleton and components

Homepage structure, work page routing, navigation, and i18n, all knocked out. This was also when the MDC component system came together, establishing the Markdown-to-page workflow.

Page skeleton, routes, and shared components

Stage 3 · Interaction, visual, and features

This stage took the most time. Most of it was spent refining the interaction details and visual presentation.

1. Home Hero exploration

I wanted the Hero to communicate a strong "engineering thinking + design thinking" impression. It went through three versions:

The first idea was a slider moving between "Design Thinking" and "Engineering Thinking" poles. The interaction wasn't engaging, and the framing felt like a trade-off, a search for balance, rather than "I bring both."

Hero v1 — slider concept

Version two had two circles reveal hidden text when they overlapped, a concept from visual cryptography, genuinely fascinating as a technique. But the implementation flickered constantly, was hard on the eyes, and only showed the text at perfect overlap with no sense of reveal.

Visual Cryptography reference (opens in a new tab)

Hero v2: visual cryptography concept

Version three solved the flickering. "I BRING BOTH" emerges clearly from the intersection of the two circles. The concept and the interaction say the same thing. On mobile, a scroll-driven circle-overlap animation keeps the experience consistent across devices.

Final Hero: overlapping circles reveal I BRING BOTH

2. How I Think & Work · Line illustrations

The three cards in How I Think & Work express my core beliefs: shifting perspective, subtraction, and trying things out. Starting from hand-drawn sketches and arriving at line illustrations, I wanted to capture the feeling of ideas taking shape.

Sketches and final line illustrations

3. Ask AI · Rather not read? Just ask AI

There's a small Ask AI feature in the bottom right of each work page (desktop only). It generates a prompt with the case study URL so readers can drop it straight into ChatGPT or Claude. Since URL-embedded prompt support is inconsistent across platforms, there's a copy button alongside.

The Ask AI feature on a work page

Stage 4 · Content migration and wrap-up

Last step was bringing the old site's case studies over. I wrote a skill to auto-convert the old content into MDC format, which made the migration much faster. After filling in SEO and accessibility, it shipped.

Done!

Homepage before and after the rebuild
Work page before and after the rebuild

From static and understated to interactive, dark-mode-ready, bilingual, and visually distinct. The biggest difference between old and new is that this site went from being "a place to put work" to being a piece of work in itself.

And the thing that felt fast wasn't how much code AI wrote. It was the feeling of iteration speed finally keeping up with design speed.