Back to Logs
2026-01-11golang
5 MIN READ

Designing a CMS That Doesn’t Suck

I’m tired of CMSs that think they’re the main character. Most headless platforms today feel like they were designed by a committee of people who haven’t written a line of CSS in a decade. You know the drill: page builders where every single sentence has to be wrapped in a "Text Module," dashboards that take five seconds to load a dropdown, and permission tiers so complex you need a law degree just to let a freelancer edit a blog post.

They’ve fallen into the SaaS Feature Spiral: the inevitable path where a simple tool adds features until the original purpose is buried under a mountain of "enterprise-ready" options.

That’s why I’m looking at Centra. It’s the "no-nonsense" alternative for people who just want to ship code.

What is Centra?#

Centra is a minimal headless CMS1 written in Go. It doesn’t try to be your marketing automation suite. It has exactly one job:

  1. Hold your content
  2. Give it to you via API
  3. Get out of your way

The Philosophy of the "Invisible Tool"#

The best tools are the ones you stop noticing. You don’t think about Git when you commit. You don’t marvel at curl when it returns JSON. You don’t admire your compiler every time your code builds. These tools disappear into your workflow—and that’s exactly why they’re powerful. An invisible platform is one that never asks for your attention unless something is genuinely wrong. Most modern CMSs fail this test. They constantly remind you that they exist. There’s always another dashboard to open, another proprietary concept to learn, another abstraction layer between you and your content. You don’t use them, you negotiate with them. Centra is designed to do the opposite. In Centra, there is no "content modelling experience". Your content already has a model: files, folders and formats. There is no visual editor to fight your layout decisions. Your frontend owns the presentation. There is no workflow engine pretending your personal blog needs the same governance rules as a multinational newsroom.

Centra’s ideal UX is boring—and that’s intentional.

You write Markdown. You commit it. You deploy. Centra reads it, caches it and serves it over API on your request. That's it. No ceremonies. No proprietary magic. No lock-in disguised as convenience.

An invisible platform is one that respects:

  • Your codebase is the source of truth, not a web UI.
  • Git already solved versioning, history, and collaboration.
  • Your framework already knows how to render content better than any CMS ever will.

Centra doesn’t want to be your “content hub.” It wants to be infrastructure. Something you install, configure once, and then forget about until you need it, and it’s just there, quietly doing its job. That’s the bar. If your CMS requires onboarding sessions, certification programs, or a dedicated “content ops” role to function, it’s not helping you ship. It’s inserting itself between you and your work. Centra steps out of the way—and that’s the feature.

Example#

Your content model is your filesystem.

content/
└── blogs/
    ├── one.md
    └── second.md

blogs/one.md

---
title: My first post
tags: [golang, news]
category: updates
---
# Content 1

blogs/second.md

---
title: My second post
tags: [react, news]
category: tutorials
---
# Content 2

Now you can:

  • Fetch all blog posts via /api/blogs
{
  "collection": "blogs",
  "items": [
    {
      "slug": "blogs/first",
      "meta": {
        "category": "updates",
        "contentType": "application/json",
        "kind": "markdown",
        "size": 94,
        "tags": [
          "golang",
          "news"
        ],
        "title": "My first post"
      }
    },
    {
      "slug": "blogs/second",
      "meta": {
        "category": "tutorials",
        "contentType": "application/json",
        "kind": "markdown",
        "size": 96,
        "tags": [
          "react",
          "news"
        ],
        "title": "My second post"
      }
    }
  ]
}
  • Fetch a certain blog post via /api/blogs/second
{
  "body": "# Content 1\n",
  "category": "updates",
  "tags": [
    "golang",
    "news"
  ],
  "title": "My first post"
}

No schemas to click together. No models to sync. No UI fighting your Git history.

Your editor is your CMS. Centra just delivers the data.

Footnotes#

  1. The term CMS is debatable, maybe I should call it CDS (Content Delivery System). But CMS is better for SEO 👀

End of Entry