re: When do CMSs make sense? VIEW POST


Fully transparency, I'm the Co-founder of TakeShape, a headless GraphQl CMS.

TLDR: It's not a good idea to build a Basecamp clone on a CMS. CMS should be used when you're managing content, but probably not user generated content. Consider JAMstack over tradtional tech stacks like LAMP. Use a headless CMS instead of a monolithic CMS.

Casey did a thorough job talking about CMS, so I'm going to come at this from a different angle. Also, hat tip to the use of the soapbox element. I'm going to use it here :)


The Big Question
I'd like to start by addressing this question - "why don't we build everything in Drupal/WordPress/Joomla, etc., and bolt more things on top". I think this question is one of the biggest reasons why we are where we are with CMS today and why there's a real opportunity for changing how we build things by adopting the JAMstack, JavaScript, APIs and Markup. More on the JAMstack later. The WordPress / Drupal / Jooma approach is the monolithic approach to building.

You're exactly right in your description, you're bolting on more and more services and functionality until you have the application you wanted and you're doing all of this on the server. This results in worse and worse performance and more and more opportunity for security vulnerabilities for your application. The trouble is that you're adding on to platforms that were designed for a specific purpose, to manage content, and in the case of WordPress to manage blog content. WordPress is not an application platform, no matter how many times you see people using it in this way. You can bend these systems to your will, but they're more likely to break your spirit while you're doing it.

Compose Your Application Close To Your Users
Enter the JAMstack. When you're building with the JAMstack you're shifting where the functionality of your app comes together, from the server to the client. You're composing best-in-class services together on the client to make your application, rather than using whatever is available to you in your monolithic server app. You might actually already be part way there, think about a commenting system. If you used server side commenting and had a popular blog you'd be in some serious trouble unless you had a beefy backend, not to mention the expense of running a beefy backend during slower times.
Almost no one uses WordPress built in commenting, everyone uses a third-party commenting engine loaded from a user's web browser and rendered on the page with JavaScript.

Getting on the JAMstack

  • Prerender you HTML using a static site generator (don't discount this even if you're building ugc app)
  • Make your front-end dynamic with React or Vue.
  • When you're tempted to use a server, look to using Functions-as-a-Service.
  • Use best-in-class services for things like, commenting, forms, e-commerce, auth, and yes even CMS, that can be delivered directly to your users' web browsers.



Thank you so much for the detailed reply. I checked out TakeShape and was completely blown away! Still, I have old scars and am not going to quickly jump on to the hype train. I used to think JAMstack was another buzzword, but this has really opened my eyes to new possibilities. I will definitely explore TakeShape (and JAMstack) more.


There's a great conference for JAMstack that just occurred last week. I wrote up a bit about the happenings there If you start to get into the JAMstack more definitely check out the conference! Lot's of friendly people in that community. It was a blast!

code of conduct - report abuse