Folio
Type that won't sit still.
Field notes
An editorial portfolio on warm paper: a giant name whose letters stretch and swell on a variable-font wave, a reel wiping between posters, and a broken grid that scatters the name as you scroll. No images, no canvas.
- Variable fonts
- Scroll-driven
- Portfolio
- Light theme
Folio is a portfolio for a designer, studio, or art director who wants the name to do the talking. It fills the screen in two broken-grid lines, and every letter rides a wave through the width and weight axes of the variable font Anybody, so the name breathes while each line keeps nearly the same width. A small reel in the corner wipes from one project poster to the next.
Scroll and the letters scatter off the page, then a Selected Work grid reveals each project through a rising mask, followed by an about line and a contact footer with the email set huge. Every poster is drawn in SVG, so there are no image files to supply, and swapping one for a real photo is a single line. Visitors who prefer reduced motion get the name at rest and no scatter.
How it's built
- The letters stretch and swell, but each line barely changes width. Every letter rides a sine wave through the variable font’s wdth axis, and the wave spans exactly one cycle per line, so wide letters and narrow letters cancel out.
- Seamless reel: at t = 0 the last poster is fully shown and the first starts its clip-path wipe, so a 10 s loop closes with no cut.
- No images at all: every project poster is about 20 lines of SVG, so the whole portfolio rebuilds byte-for-byte from one prompt.
- useId() for SVG defs: the same poster in two places with a shared gradient id makes one borrow the other’s.
Inside the prompt
Every file below is written out in full, so your agent creates the project exactly — no guessing, no missing pieces.
folio-editorial/
├─ .gitignore
├─ index.html
├─ package.json
├─ tsconfig.json
├─ vite.config.ts
└─ src/
├─ App.tsx
├─ index.css
├─ main.tsx
├─ vite-env.d.ts
├─ components/
│ ├─ Hero.tsx
│ ├─ KineticName.tsx
│ ├─ ProjectArt.tsx
│ ├─ Reel.tsx
│ └─ WorkGrid.tsx
└─ lib/
├─ loop.ts
└─ work.tsRecut it
- Change the name, and split it across two lines
src/lib/work.ts → NAME - Edit the projects, their colors, and poster styles
src/lib/work.ts → PROJECTS - Show real work instead of the SVG posters
src/components/ProjectArt.tsx → ProjectArt - Tune how far the letters stretch and swell
src/components/KineticName.tsx → Letter - Rearrange the broken grid
src/components/WorkGrid.tsx → LAYOUT - Swap paper, ink, and accent colors
src/index.css → --color-accent
More in Portfolio
All portfolio templates →
Darkroom
PortfolioA dark photography portfolio where the photos sit on an endless WebGL film strip. Scroll or drag and the strip bends with the speed while the colour channels split; click a photo and it opens full-bleed with its title. Eight hosted photos included, swappable in one file.

Melt
PortfolioA showreel page for a film studio. Full-screen stills melt into each other in a WebGL shader, the big title melts with them, the cursor stirs the picture like water, and hovering a project in the work index melts the reel straight to it.