I am exploring options for a headless CMS for a community website where a non technical admin will post details about events in the community like a meeting or volunteering done by the community. They don't have funding. What is the cheapest option out there?
The answer isn't headless WordPress. It's WordPress.
You're building something for a volunteer community, which means at some point you'll be gone and somebody will be wondering how the heck to manage the site with this "custom" setup that they can't figure out with chatgpt or a youtube video.
Set them up for the future, not for the now. WordPress. Just WordPress.
Reference: 26+ years in hosting, 4 years in WordPress-only hosting.
Exactly. I don't know if they've gotten better, but I worked on a headless Contentful + Gatsby site (because the previous developers got sucked into JAMstack hype) and it was a comedic catastrophe.
It required constant developer oversight, even when only publishing one or two articles a week. Things broke all the time. Builds broke constantly. Things went wrong left right and center.
I hate to agree because I hate WordPress, but when building something for others especially in a volunteer community it's still the go-to solution.
Pros, a ton of docs, easy non-technical customization, long term support, many already experienced users, made for basically exactly what you're doing.
Cons, it's WordPress, and the actual wp-loop is a nightmare of bad choices.
In every experience I've had, non-technical people have had a terrible time doing customizations. Not a single time have I ever seen them successfully navigate customizing pages without someone else stepping in. I see this as the worst case scenario: non-technical people can't do it and technical people also can't because they only have subpar tools to do so. I disagree wholeheartedly with this assumption.
Same. Or maybe something using PHP just as a basic templating engine (like how people used to use it). Something that can be copy/pasted to a dime a dozen cPanel powered shared webhost at a moment's notice.
In my experience, wordpress is very confusing for non-technical people to navigate. It is largely not different than a "custom" setup because it's always some patched together job of various plugins to the point that it becomes brittle and difficult to work with. I get the sense that technical people think it is more straightforward and prescribe it to people, but any non-technical person I've worked with is utterly lost in it.
I don't think the LLMs change the argument either. If anything, dealing with the complexities of wordpress could make it even more difficult without someone who knows what they're doing.
Somewhere around 15 years ago, I thought wordpress was viable, but I think we need to leave it in the dust. I worked with it again 5 years ago, and the situation was no different from what I could tell.
My wife downloads plugins for every little thing. One to hide hide the title from a page, another to display a gallery of images. Often she’ll forget and download a similar one again and they all break.
Also instead of making multiple posts, she edits the same post over and over again, adding content to it.
That’s how she was taught to use Wordpress at her old job and no amount of explaining or demonstrating will make her change her ways.
I really enjoyed sanity.io a year ago. It had the best data structure flexibility by a mile, with the ability to have multiple user draft states and merge conflict resolution.
Other Headless CMS felt restrictive, with shared drafts or the requirement for all published items to have changes go live instantly.
Once you're set up with your schema, the UI is easy enough for non-developers (and you can customize it for them if needed).
Why headless ? If non technical admin will post details about events, you can find a WordPress plugin for it and setup a WP site. Headless makes sense if you want to really customize the experience but you want "cheapest option" so I would assume they cannot pay for customizations anyway.
How else are they going to synergize with the latest paradigm shift?
Headless is for sharing a common backend between a web site and phone apps. If you don't have the resources for the apps then it serves little purpose.
We recently landed on Strapi. There’s an open source version but we use the hosted one (for now). All in all good. There are a few quirks in the UI (sometimes smaller changes weren’t saved - although this might be a user issue from my side) and the markdown editor could be more user friendly.
We are sticking with it for now because it’s indeed good enough and I haven’t found any better options (give the price).
IIRC Strapi is a great option for green field projects. C/p from their docs:
"Strapi applications are not meant to be connected to a pre-existing database, not created by a Strapi application, nor connected to a Strapi v3 database. The Strapi team will not support such attempts. Attempting to connect to an unsupported database may, and most likely will, result in lost data."
Unfortunately, most of the time I do not have such luxury. What are the CMS options for pre-existing databases?
Also highly recommending decap CMS, or the svelte version sveltia[0].
With Gitlab backend and PKCE authorization, this CMS connects directly to gitlab without any other middleware (unlike when using Github, which will require one for the auth).
With a gitlab pages + decap CMS + static site (jamstack), it is possible to have a site running at no cost. Currently having 20+ sites running this setup for clients and never hit an issue "modeling" the data as Decap config, widgets (also custom ones), can allow pretty much anything.
One downside for this setup, is that uploaded media are not re-sized or compressed (since there is no backend job doing it), so a client must be briefed into "making smaller images" (on the web client side with squoosh.app[2] for example), or using a SSG that does that built-in (hugo, gatsby)
I might be biased but I love wagtail mainly because of django, can't stand php insanity. I'm sure there are some good cms's written in Personal Home Page language, I just haven't seen any
Used directus[0] (v9) for a customer project[1]. I needed to sync the CMS content with meilisearch[2], so I had to write a custom extension that registers some hooks[3] for that. I discovered some weirdness in the API, since the payload of a hook behaves differently whether the CMS change gets triggered via UI event, API request, or CSV upload. Was a bit annoying, but got it working in the end. Don't know if that improved in later versions, but I honestly also didn't keep up with development since the license change.
Headless is a constraint you added as a developer for yourself - it's definitely not a thing the users will care about. Ghost is a great, simple, batteries included non-headless CMS for things like you describe. Self-hosted or as a service.
If you have a registered nonprofit, like a 501(c)(3), you can often get a substantial break from some SaaS companies.
Some will give you the service for free (rate-limited, probably), while others may not give you a break at all.
I will say Caveat Emptor. If you keep your backend on Someone Else's Machine, they can hold your data hostage. Hosting should be fine, but some SaaS companies have a nasty habit of considering any data they have access to, to be "theirs." May be fine, until they sell the company, at which time, bend over and squeal.
Source: Been doing nonprofit development work since last century.
I know this is for a non-technical admin, but I just wanted to give Zola [0] a shoutout.
I love the single binary approach, and it being so simple. Got my blog up and running in minutes with absolutely minimal configuration. Helps me focus on the writing rather than tinkering with the tool
I think this coupled with Keystatic [1] could be a nifty little lightweight setup for most.
Hmm, personally I never really cared for dated paths, seems like a problem that's solved by metadata defined in the frontmatter.
my-blog-article-title.md seems enough, and dates usually feel like clutter, since titles are distinct as they are and you don't really need the date in the filename to do anything useful.
But again, different people prefer different setups.
> my-blog-article-title.md seems enough, and dates usually feel like clutter, since titles are distinct as they are and you don't really need the date in the filename to do anything useful.
I love to see when a page by posted just by looking at the URL. It also avoids naming collisions. For a static site, not rendered from a db, I wouldn't want to store every post ever written in one dir either. How well does that scale? Yeah, you can probably store 100K files in dir, but it will become unwieldy and slow to load when browsing a lot sooner. Just a dir per year probably solve any such problem.
you're correct, I had mistakenly interpreted your comment as dates in file paths instead of dirpaths, and I would second this, it really gets unwieldy once you have 100k or even 500+ files in a single directory.
Apologies for the miscommunication.
Also
> I love to see when a page by posted just by looking at the URL.
would solve that with a URL path /2015/my-article-title;
also creates a nice way to go to articles by year for example by simply navigating to the /2015 route
On the other hand I worked for a small place that was spending over 250k'ish per year on website maintenance to a company that setup their headless CMS website that they sold them.
They complained about it constantly but they kept paying (7 years and going when I was doing work for them which by they way they constantly tried to shortchange me). Never feel bad about taking money from a company, its just business. Setup your income stream and take care of yourself. I'm not sure why there is this bizarre self sacrificing mentality in tech to make other people rich at your own expense.
Not to mention if you invoke those companies you are putting yourself in their walled garden that makes them money and takes control of your income away from you. Why would any person want to do that? There is no moral quandary here.
There is some truth to this. One of the fails we had was pricing our product too low, where it was looked at as a stepping stone to something more expensive, even though it provided the same exact functionality minus the fancy looking ui. There were businesses that wanted to get out of their existing application suite, but are hooked in due to management perception and the sunk cost fallacy. The company who overpriced considerably is reaping millions per year on that application. If I could just go back in time..
> Not to mention if you invoke those companies you are putting yourself in their walled garden that makes them money and takes control of your income away from you. Why would any person want to do that? There is no moral quandary here.
Buying into proprietary software and walled gardens is ridiculously common and acceptable in a business environment. That's code for "no liability if something goes wrong, minimal maintenance, and easy onboarding of new employees."
The comment context was in response to selling something to a company as a service. If you are just being an unofficial middle man between a SaaS and your customer you are going to make very little money. Its essentially uber for tech, you are going to be bearing the burden of all the implementation friction. On top of that you are acting as an uncommissioned sales person for the SaaS while they collect income indefinitely from your work.
The difference in how you setup the deal is literally millions of dollars in the real life example I mentioned. I don't care about corporations. I want HN posters to make money for their work and skills rather than be used and tossed in the trash by corporations. Guess what? The company is still in business and doing fine. The owner just gets one less lambo per year and a developer gets to feed their family.
Its also worth mentioning the obvious only reason they still pay the small consultancy is that they are constantly asking for changes and new things. Why would you want the extra overhead of working in someone elses sandbox when you have to do all the work anyway. Might as well be on your terms if you are going to do the work.
AI isn't going to be much help unless the customer is comfortable vibe coding in cursor and isn't too intimidated by a git/serverless workflow...but firing up an IDE like cursor and dealing with git + serverless builds is still a huuugge ask for most people who aren't in tech by trade.
Even AI assisted it's going to be rough.
It's important to remember a vast majority of people have never used their desktop computer for more than MS Office and Google Chrome (facebook/youtube) and maybe ChatGPT now (still only 34% of the US population).
Heck, dealing with a file system is already too much complexity for most of the population.
Navigating around some enterprise-y headless CMS UI is already going to be a big ask. If these volunteers are anything like the ones I've dealt with before, they're going to struggle to even get past basic auth (which email did I use? What's my password again? What the hells a password manager???)
I honestly can’t tell whether this comment is satire or this site is just full of people who have no ability (or no interest) in understanding other people. You don’t need to be a psychologist or even have a good understanding of other people to recognize what a ridiculous suggestion this is. You just have to care a tiny little bit about other people. Is that really too much to expect?
Though given that the psychopath alleged-incestuous-rapist Sam Altman has been the top user on the site since literally day one I suppose I shouldn’t be surprised
Fortunately the top comment seems to be a Wordpress recommendation but I agree with your sentiment completely. The industry has lost the care for people.
Im using directus (https://directus.io/) for my personal website with a vacation blog and some posts…
So far it works pretty well and my gf is also able to use it on her own, so you could say its non-tech user approved haha
I also did some websites using hugo and DecapCMS from netlify. That also worked but the ui isnt to fancy and it gets a bit confusing on complex pages. But it can directly push to a git repo so you have version control out of the box
Some people might not like WordPress' templating system. Last I looked at it, admittedly 5 years ago, it was kind of annoying. I had to use Advanced Custom Fields to build weird things content types but the general blogging engine still seemed pretty good.
I use Craft CMS’ GraphQL capabilities with my Eleventy site. Works well and helps me keep my page loads static. I would also recommend Directus for this, as it has some nice quality-of-life benefits.
To manage deploys, I have used Cleavr, which does a good job at it without being too user-unfriendly. That’s a paid service, about $6/month.
Ghost (my preference, to avoid security concerns around WordPress), or WordPress, if you can deal with the occasional security issue or use managed hosting.
Basically forget the “headless” bit and use a bog-standard CMS.
In my experience, the cheapest way to serve content on the web is static, for convenience rendered with a static site generator.
It's admittedly more editor-less than headless, but anything that constantly needs to runs on a server will cost more, in the end, even if it's a freemium service, right now.
Cheapest? The most expesive part is going to be paying the person or company who sets it up, maintains, and documents it. I'm an expert at Drupal, so for my companies, Drupal is cheap and it can be adapted to grow and change over time as new ideas for the application are discovered; you don't know what your website will need next year so it's nice to have a CMS that is based on having the ability to adapt over time. Wordpress is only cheap if your ambitions for the site aren't big. Trying to do too much with it is a developer's nightmare. Peace.
I think a hosted solution is best, unless you know for sure that they’ll always have a developer willing to volunteer their time to manage their server and keep everything up to date.
The cost is peanuts compared to the hourly rate of a developer to personally manage and keep secure their website for them.
As for static site, you think a non technical person can handle a static site generator and deploying to GitHub Pages? I doubt it.
Often times it gets very expensive to cheap out on things.
Sorry I know you said headless, but have you considered wordpress? Its unsexy, but the ecosystem is really well suited for this and hosting is dirt cheap.
Because its so popular and been around for so long, theres tons of free themes, plugins and videos which will reduce your support burden - plus your admin could get help easily as its not something you rolled.
Other than that, decap on gitlab is easy to run for free, and will provide the admin with a ui for editing content. Astro is also great and stable for this type of thing.
You may also want to check things like Appwrite for hosted solution (free plan available) or PocketBase for self-hosting on any VPS (fly.io does not charge below 5$). Those are more developer-focused, but also should be much less restrictive.
PayloadCMS seems really interesting, I’ve used it successfully for a small blog but I feel it has a lot of potential.
It’s not fully open source, if you want additional features like SSO you have to pay for premium version.
They got acquired by Figma so I would not build on payload anymore, I fully expect the product to wither away now given Figma has their own priorities and has a non-technical userbase.
Not immediately practical -- I've been looking into using Pharo (smalltalk) to build a web authoring / static site generator that non-devs can use, and something that devs can quickly customize or extend.
You could use notion if you want forms (event sign ups or tracking stuff like inventory). There’s a way to make notion pages a “website”.
It’s something a little easier than Wordpress for non technical people. Nothing is super simple but at least notion can be figured out more easily than code or admin panels. When you’re not there, they won’t be completely in the dark.
You're building something for a volunteer community, which means at some point you'll be gone and somebody will be wondering how the heck to manage the site with this "custom" setup that they can't figure out with chatgpt or a youtube video.
Set them up for the future, not for the now. WordPress. Just WordPress.
Reference: 26+ years in hosting, 4 years in WordPress-only hosting.
Wordpress, give them email and password, and a .pdf with screenshots on where to click to create a new post/page or edit stuff.
It required constant developer oversight, even when only publishing one or two articles a week. Things broke all the time. Builds broke constantly. Things went wrong left right and center.
Don't do it. Give them a Wordpress site.
Pros, a ton of docs, easy non-technical customization, long term support, many already experienced users, made for basically exactly what you're doing.
Cons, it's WordPress, and the actual wp-loop is a nightmare of bad choices.
I don't think the LLMs change the argument either. If anything, dealing with the complexities of wordpress could make it even more difficult without someone who knows what they're doing.
Somewhere around 15 years ago, I thought wordpress was viable, but I think we need to leave it in the dust. I worked with it again 5 years ago, and the situation was no different from what I could tell.
Also instead of making multiple posts, she edits the same post over and over again, adding content to it.
That’s how she was taught to use Wordpress at her old job and no amount of explaining or demonstrating will make her change her ways.
I've used it alongside Astro for both my personal blog[2] and two company sites[3][4]. It's worked amazingly well each time.
[1] https://keystatic.com/
[2] https://github.com/skeptrunedev/personal-site
[3] https://github.com/devflowinc/trieve/tree/main/website
[4] https://github.com/patroninc/patron/tree/main/website
Other Headless CMS felt restrictive, with shared drafts or the requirement for all published items to have changes go live instantly.
Once you're set up with your schema, the UI is easy enough for non-developers (and you can customize it for them if needed).
Headless is for sharing a common backend between a web site and phone apps. If you don't have the resources for the apps then it serves little purpose.
Or build/add an API when needed
We are sticking with it for now because it’s indeed good enough and I haven’t found any better options (give the price).
"Strapi applications are not meant to be connected to a pre-existing database, not created by a Strapi application, nor connected to a Strapi v3 database. The Strapi team will not support such attempts. Attempting to connect to an unsupported database may, and most likely will, result in lost data."
Unfortunately, most of the time I do not have such luxury. What are the CMS options for pre-existing databases?
Can you run some migration scripts to port the old database content into a new CMS?
Basically it provides a UI and all changes are pushed to GitHub which will launch the release process back in Netlify.
Seems it might fit your requirements too.
0. https://decapcms.org/
One downside for this setup, is that uploaded media are not re-sized or compressed (since there is no backend job doing it), so a client must be briefed into "making smaller images" (on the web client side with squoosh.app[2] for example), or using a SSG that does that built-in (hugo, gatsby)
0. https://github.com/sveltia
1. https://decapcms.org/docs/gitlab-backend/#client-side-pkce-a...
2. https://squoosh.app
https://www.gatsbyjs.com/docs/glossary/headless-wordpress/
https://www.drupal.org/docs/develop/decoupled-drupal https://www.lullabot.com/resource/decoupled-drupal
Drupal has a really strong community behind it, and was completely rebuilt a number of years ago with modern PHP. It uses Symfony, composer, etc.
[0]: https://directus.io/
[1]: https://genopedia.com/
[2]: https://www.meilisearch.com/
[3]: https://directus.io/docs/guides/extensions/api-extensions/ho...
Some will give you the service for free (rate-limited, probably), while others may not give you a break at all.
I will say Caveat Emptor. If you keep your backend on Someone Else's Machine, they can hold your data hostage. Hosting should be fine, but some SaaS companies have a nasty habit of considering any data they have access to, to be "theirs." May be fine, until they sell the company, at which time, bend over and squeal.
Source: Been doing nonprofit development work since last century.
I love the single binary approach, and it being so simple. Got my blog up and running in minutes with absolutely minimal configuration. Helps me focus on the writing rather than tinkering with the tool I think this coupled with Keystatic [1] could be a nifty little lightweight setup for most.
[0] https://github.com/getzola/zola
[1] https://keystatic.com/
I'd like to recommend a highly underappreciated single binary rewrite of Jekyll in Go: https://github.com/osteele/gojekyll
my-blog-article-title.md seems enough, and dates usually feel like clutter, since titles are distinct as they are and you don't really need the date in the filename to do anything useful.
But again, different people prefer different setups.
I love to see when a page by posted just by looking at the URL. It also avoids naming collisions. For a static site, not rendered from a db, I wouldn't want to store every post ever written in one dir either. How well does that scale? Yeah, you can probably store 100K files in dir, but it will become unwieldy and slow to load when browsing a lot sooner. Just a dir per year probably solve any such problem.
Apologies for the miscommunication.
Also
> I love to see when a page by posted just by looking at the URL.
would solve that with a URL path /2015/my-article-title; also creates a nice way to go to articles by year for example by simply navigating to the /2015 route
Professional work above that: Sanity [4] or Hygraph [5]
[1] https://statamic.com
[2] https://www.advancedcustomfields.com
[3] https://roots.io/acorn/
[4] https://www.sanity.io
[5] https://hygraph.com
Just set them up on a website builder like Webflow/Framer/Ycode/Squarespace/etc that has a CMS built in.
They complained about it constantly but they kept paying (7 years and going when I was doing work for them which by they way they constantly tried to shortchange me). Never feel bad about taking money from a company, its just business. Setup your income stream and take care of yourself. I'm not sure why there is this bizarre self sacrificing mentality in tech to make other people rich at your own expense.
Not to mention if you invoke those companies you are putting yourself in their walled garden that makes them money and takes control of your income away from you. Why would any person want to do that? There is no moral quandary here.
Buying into proprietary software and walled gardens is ridiculously common and acceptable in a business environment. That's code for "no liability if something goes wrong, minimal maintenance, and easy onboarding of new employees."
Duh.
The comment context was in response to selling something to a company as a service. If you are just being an unofficial middle man between a SaaS and your customer you are going to make very little money. Its essentially uber for tech, you are going to be bearing the burden of all the implementation friction. On top of that you are acting as an uncommissioned sales person for the SaaS while they collect income indefinitely from your work.
The difference in how you setup the deal is literally millions of dollars in the real life example I mentioned. I don't care about corporations. I want HN posters to make money for their work and skills rather than be used and tossed in the trash by corporations. Guess what? The company is still in business and doing fine. The owner just gets one less lambo per year and a developer gets to feed their family.
Its also worth mentioning the obvious only reason they still pay the small consultancy is that they are constantly asking for changes and new things. Why would you want the extra overhead of working in someone elses sandbox when you have to do all the work anyway. Might as well be on your terms if you are going to do the work.
Even AI assisted it's going to be rough.
It's important to remember a vast majority of people have never used their desktop computer for more than MS Office and Google Chrome (facebook/youtube) and maybe ChatGPT now (still only 34% of the US population).
Heck, dealing with a file system is already too much complexity for most of the population.
Navigating around some enterprise-y headless CMS UI is already going to be a big ask. If these volunteers are anything like the ones I've dealt with before, they're going to struggle to even get past basic auth (which email did I use? What's my password again? What the hells a password manager???)
Though given that the psychopath alleged-incestuous-rapist Sam Altman has been the top user on the site since literally day one I suppose I shouldn’t be surprised
to generalize is to be an idiot
So far it works pretty well and my gf is also able to use it on her own, so you could say its non-tech user approved haha
I also did some websites using hugo and DecapCMS from netlify. That also worked but the ui isnt to fancy and it gets a bit confusing on complex pages. But it can directly push to a git repo so you have version control out of the box
like if you dont have any money you can get wordpress hosting for free from wordpress.com
To manage deploys, I have used Cleavr, which does a good job at it without being too user-unfriendly. That’s a paid service, about $6/month.
Still not much that was easier to create a website for a non-tech user.
Basically forget the “headless” bit and use a bog-standard CMS.
It's admittedly more editor-less than headless, but anything that constantly needs to runs on a server will cost more, in the end, even if it's a freemium service, right now.
Editing content with Obsidian and rendering it with Hugo is no too bad, btw. (see eg. https://www.nickgracilla.com/posts/obsidian-is-my-hugo-cms/ for a setup).
The cost is peanuts compared to the hourly rate of a developer to personally manage and keep secure their website for them.
As for static site, you think a non technical person can handle a static site generator and deploying to GitHub Pages? I doubt it.
Often times it gets very expensive to cheap out on things.
Because its so popular and been around for so long, theres tons of free themes, plugins and videos which will reduce your support burden - plus your admin could get help easily as its not something you rolled.
Other than that, decap on gitlab is easy to run for free, and will provide the admin with a ui for editing content. Astro is also great and stable for this type of thing.
https://www.storyblok.com/
https://www.datocms.com/
From own experience, the developer experience is awesome. Both are based in Europe, which is probably why those were not mentioned here before :)
You may also want to check things like Appwrite for hosted solution (free plan available) or PocketBase for self-hosting on any VPS (fly.io does not charge below 5$). Those are more developer-focused, but also should be much less restrictive.
Have no real experience with any of them.
Well how are they then going to pay for their web hosting? Tell them to scram.
It’s something a little easier than Wordpress for non technical people. Nothing is super simple but at least notion can be figured out more easily than code or admin panels. When you’re not there, they won’t be completely in the dark.
Just my 2c.