Motion with manners
GSAP and Lenis on one ticker: a per-letter hero, a pinned horizontal proposal board that walks one card per swipe on phones, all of it falling back to plain content without JS or with reduced motion.

Freelance · Portfolio + CMS for a marketing executive
A motion-led portfolio with a Vietnamese CMS the owner runs herself. Publish in the admin, live on her site on the next page load.
Visit portfolio.
Screen recording
A campaign executive needed a portfolio that looked like her work, not a template, and that she could update without a developer. Her campaigns, proposals and videos change every quarter.
My part. Everything: design system, front-end, CMS, migrations, deployment and the test suites.
Next load
from Publish to the live page
Source: cache-tag test
0
layout shift (CLS) on mobile
Source: Lighthouse
240+
automated admin and web checks
Source: e2e suites


Payload 3 runs inside the same Next.js app on Neon Postgres and Vercel Blob: no second server, $0 a month, her data in her own Postgres.
Every read is cached with a tag the publish hook expires, so the site stays static-fast and her change shows on the next load.
Before a release, migrations run up and down on a read-only copy of production data, so production is never the test target.
Credit. Content and art direction by the client.