grafsoul.com is my personal site and, at the same time, a bilingual content platform where a portfolio and experiments live alongside long technical books and articles, sections about my interests - films, series, music, books - and an industry news feed. I built it together with Claude, and the very page you are reading right now lives inside this system.
Everything runs from the CMS
The heart of the site is the headless CMS Payload, running on Postgres under the hood of Next.js, and almost everything here is built as data rather than hard-coded pages. Sections are created, renamed, hidden, reordered and re-tinted straight from the admin panel, without touching a single line of code: a dynamic route builds the page itself according to the section's type, whether that is a feed of projects, a shelf of books, or the news feed. All the content is written in Lexical rich text and fully localised.
More than a portfolio
This is not a business-card site but several distinct products under one roof. The portfolio and experiments are these very cards and pages you are looking at. A separate and substantial layer is the books: full bilingual technical books and study notes, with chapters, code and diagrams placed right where they belong in the text rather than dumped at the end. The interest sections are built with the same care - films and series, music with players and cover art, books listed with their authors. And there is an industry news feed that fills itself automatically on a schedule. Each section carries its own internal logic, yet they all share one common shell.
Bilingual, and the content pipeline
The whole site lives in two languages: every field carries a Russian and an English version, and the interface and SEO switch together with the locale. Publishing itself is thought through separately - I prepare material in a local database, proofread it, and then publish to production point by point over the REST API: one book, article or project at a time, idempotently, without ever redeploying the entire database. This very card reached production exactly that way.
