Skip to content

ProductsLive

This website

The site you are looking at — Next.js and Payload, four languages, one very patient fallback rule.

Next.js · Payload CMS · Postgres · next-intl · Tailwind CSS · TypeScript

Source code

Demo image (brand-cover-dx)

Problem

The Squarespace site buried the projects two levels deep, described the work in stock phrases that said nothing, and had no honest way to be four languages at once — every page implied a translation that did not exist.

Solution

A Next.js and Payload rebuild with two deliberate i18n strategies: each piece of writing is one document holding every language, shared assets carry per-language fields, and everything falls back to English rather than breaking. A language that has not been written is excluded from that language’s indexes instead of being served half-empty, and hreflang only ever advertises a language that actually exists.

My role
Design, build, content architecture.
Context
Personal site, rebuilt off Squarespace.
Timeframe
2026

Outcome

  • 4

    languages served from one content model, with honest hreflang

  • 0

    third-party scripts on the public site

A four-language personal site: English, Japanese, Turkish and Korean. Prose is translated per language inside one document; artwork titles and photo captions are shared documents with per-language values; everything falls back to English rather than breaking.

Content lives in Payload and is edited at /admin. The public site renders statically and revalidates when content changes.