← All work

CASE STUDY 04 · FREELANCE · CMS / AI

A CMS matters more in the AI era

In 2022-2023 I built the website of BOR-KUR, a family-run broiler farm, in Polish and English. All of its content came from a CMS. The same split of content from design and logic is worth more now that AI agents edit websites.

2 languages
Polish and English, one layout
1 source
the 2022-2023 build pulled all of its content from the CMS
15 months
freelance engagement, Sep 2022 - Nov 2023

The problem

BOR-KUR is a family-run broiler farm. I built its website as a freelance full stack developer between September 2022 and November 2023.

It isn’t a shop. Nothing is sold on it. It’s a company website: who the farm is, what it values, how to contact it and where to find it.

The BOR-KUR home page in Polish at desktop width: the headline Rodzinna hodowla, a short intro, a contact button and a photo of chicks.

A site like that is mostly content. It runs in Polish and English, so every headline, every paragraph and every form label exists twice.

If that text lives inside components, every new language multiplies the files you have to touch.

The split

I took the content out of the code. The 2022-2023 build pulled all of its content from the CMS, Contentful. The design and the logic lived in Next.js, React and TypeScript.

The CMS had one job: it held the content.

With the content in one system, a new language is more content, not more code.

The BOR-KUR home page on a phone, Polish on the left and English on the right. The layout, the button and the photo are the same. Only the copy is different.

What the site is

One page that says who the farm is

The home page has a headline, an about section, 3 values (people, growth, quality), a contact form and the address. A second page shows the farm on a map, with a button for directions.

The Our values section of the BOR-KUR site in English: 3 round photos with the headings People, Growth and Quality, each with a short text below.

2 languages, one layout

Polish is at /, English is at /en. One button in the header switches between them.

Everything you can read changes with the language: the navigation, the headings, the form labels and the alt text of the images. The layout stays where it is.

Why it matters more now

The AI era puts more and more weight on separating a site’s content from its design system and its logic. That’s why a CMS matters more now, and why the split is worth making.

You can see all the content in one place

It’s simply better to know and see all of a site’s content in one place, for example in one file. You can change the copy freely, without jumping from file to file.

Not every model writes well

Some language models are good at copywriting, some aren’t. When the copy is separate, the model that writes well can work on the copy and leave the code alone.

Agents use fewer tokens

Agentic systems find and fix what you care about more easily when the content has its own place. It works the other way too: when a task is about logic, the agent can skip the content and leave it alone. Every file an agent doesn’t have to read is tokens saved.

Clean boundaries help the code too

When the boundaries between modules are clean and clear, LLMs work better with the code. The same boundaries make it easier to generate documentation and files like llms.txt. I expect files like that to be checked in the future, in the context of PageSpeed Insights and Core Web Vitals.

The same goes for design systems

A design system, together with noindex pages, can guarantee a consistent brand. Noindex pages built from the design system produce whole social media profiles and posts, so the marketing content comes from the same source as the website: the design system.

The CMS can be one file

In the AI era a “CMS” doesn’t have to be a product with a login. It can be one i18n JSON file in one language.

You can always copy that file to an agent.

The proof

bor-kur.pl runs in 2 languages from one layout.

This site follows the same rule. Each case study is one MDX file in a content collection, and one layout renders all of them. The copy for my LinkedIn and GitHub profiles is one TypeScript file, and noindex profile pages render it. The build writes /llms.txt from the text of the public pages.

How it went

  1. The build

    A company website in 2 languages

    A website for a family-run broiler farm: who they are, what they value, how to reach them. In Polish and English.

  2. The split

    Content out of the code

    The whole site pulled its content from Contentful. Next.js, React and TypeScript held the design and the logic.

  3. The shift

    AI agents start to edit websites

    A clean content boundary lets an agent find the copy fast, or leave it alone.

  4. Today

    The CMS can be one file

    One i18n JSON file in one language does the same job, and you can always copy it to an agent.

Stack

  • Next.js
  • React
  • TypeScript
  • Contentful CMS

Working on something similar?

Book a 30-min call → (opens in a new tab)
Copied!
Book a call (opens in a new tab)
Awwwards