ProductsLive
This website
My personal site, moved off Squarespace and rebuilt as a Next.js app on the same domain, in four languages.
Next.js · TypeScript · Payload CMS · Postgres · next-intl · Tailwind CSS · Vercel


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 app with Payload as the CMS and Postgres underneath, deployed on Vercel. Each piece of writing is one document that holds all four languages, and anything not yet translated falls back to English instead of breaking. Pages are rendered ahead of time and refreshed when I publish, so the site stays fast with no third-party scripts on it.
- 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
The old site was a Squarespace template: quick to set up, hard to grow. Projects sat two clicks deep, everything was in one language, and every change happened inside someone else’s editor.
The new one is written in TypeScript with Next.js and React Server Components, and styled with Tailwind CSS. Posts, art, photos, videos and projects live in Payload CMS on Postgres, so I can edit any of them from a phone. next-intl serves every page in English, Japanese, Turkish and Korean.
It runs on Vercel and kept its address, muratodesu.com, so links to the old pages still land somewhere. The motion is mostly CSS, and it stays still for anyone who has asked their device for less of it.