Designing a CMS

Hello all. This is a very general, non-technical perhaps even philosophical enquiry…

How does one go about designing a CMS?

I don’t mean, how does one build a software product (whether Kirby, Wordpress, Ghost or whatever), but as someone using one of those tools to create a system for someone else to use?

My situation: I’m an HTML email developer, and I’ve started to use Kirby to give my clients a compiler they can use themselves to create emails based on set modules. It’s mostly working brilliantly, but I’m starting to encounter some questions (from myself, mainly) about how granular to make control over various things – whether style, or layout, or content.

So I’d appreciate some recommendations for where all you experienced CMS builders go to learn about and discuss these topics.

Blogs, books, conferences even…


Kirby is a blank canvas and gives a wide range fields and options to allow you to collect the data you need to drive the website. Why not treat the panel as website itself, and wireframe it in something like Sketch or Figma before setting out all the fields in the blueprints? This should help you think through the fields ahead of writing any code.

I’d say that very much depends on your clients and/or whether you create this E-Mail builder backend client-specific or rather a one-must-fit-all for all clients. It’s basically the same as if you actually use Kirby for websites. Those devs that create themes (or similar), usually have hundreds of settings where users then have full control over basically anything, or rather a specific website where color scheme etc. are defined from the outset, and users basically just have to fill in forms without having to think about styling. Of course, anything else between those poles is possible.

I think its usually easier if people don’t have to think about design and just add their content. But of course, clients are very different…

I was using my own CMS for client jobs before I realized that no one would pay me to develop and maintain it. Then I found Kirby.

So my first personal advice on how to “create your own CMS” is: don’t do it.
The second: less is more, unless actually developing a feature costs you less than not developing it.

don’t know about books or conferences

Hey Anthony,

I think you brought up a very common question about systems like Kirby.
In the past 20 years, nearly everytime I built a website/app/whatever with a cms behind it, your question came up in one or another form. How much control do you want to give the users?

Do you add a static set of fields for them to use? Do you use something like blocks and give them the freedom to move things around and probably build an ugly layout or even break it? Do you want to allow them to change colors (and let them create really ugly pages)? …

Those are always the same questions and I believe there are no strict answers to them.
Imho it depends on who is using the system. Do the people have a sense for good/bad design? Do they have some sort of technical background to understand what it means to change certain things? Do they even have the time to think about stuff like that or do they just want to paste in some text from word and push a button to send an email or publish it as a page?

I think you could read some sites like “a list apart” or books like “Don’t let me think”. But those are mostly about general UI/UX and you have to transform the knowledge to your case.

1 Like

I’m not a CMS designer/dev but I build websites that often run on one CMS or another.
What I try to do is let design guide me. If I design a site, I try to establish a system - once you define your content types, your content blocks that repeat over and over - you have a base to decide on what content you let the user manage and how.
Freedom to change a lot is also a stress factor. Users don’t have the time to deliberate much so they need someone to make those decisions for them. This someone is you.

My professional opinion is that you shouldn’t give people too much control over everything with a CMS. They are going to use a fraction of the functionality anyway and there is just too much they could “break”, be it the style or the layout, because they might not have an eye for design.

I learned the hard way when I created a site where the client could select font sizes, font families and colors in the text fields (TinyMCE), and they would use Comic Sans and add terrible colors to make text they deemed important stand out. Likewise, if you go the page builder route, the client might create totally inconsistent layouts that go against any good taste.

So, as @inkscar already said, you should only give the clients as much control as you think they need. And if they need more then you can implement that afterwards. More often than not they want clear directions and need limits in what they are allowed to do, otherwise it will end in chaos.

I’d say that you won’t find a perfect recipe for this one. It mostly depends on client needs and those are different every time, also with experience those decisions will come as intuition, after all you’re the specialist and clients come to you cause of that.

Personally, since I’ve started using Kirby, I mostly don’t let clients interfere with the design (only the content) since they hire me because of my UI/UX expertise , even in layout and blocks I implement restrictions so whatever they’re gonna build I’ll make sure they follow my initial design system without braking it.

If you wanna build a single system that you could resell to every client, it should be pretty customisable but also simple to do it so by anyone with little documentation. A simple way I would do this is creating a design system and let people edit stuff like colors, fonts, background and let them arrange the content as they want but restricted by your design system.