Skip to content
PN Scripts

Open source

Headless CMS or traditional CMS: what the difference means and when each fits

  • PN Scripts Team
  • 6 min read

A traditional CMS stores your content and also renders the public pages, all in one application. A headless CMS only stores and manages content and delivers it through an API, and a separate front end, a website, a mobile app or both, decides how it looks. Choose a traditional CMS when you run one website and want editors to publish with the fewest moving parts. Choose headless when the same content feeds several channels, or when your front end team needs full control over a custom web application.

#What headless means in practice

In a traditional CMS such as WordPress, Drupal or a Laravel CMS, one codebase does three jobs: it holds the content in a database, gives editors an admin panel, and builds the HTML that visitors see. Themes and templates live inside the same application.

A headless CMS removes the last job. The "head" is the presentation layer. What remains is the content store, the admin panel and an API, usually REST or GraphQL. The public site is a separate application, often built with a JavaScript framework, that requests content from the API and renders it. A mobile app can call the same API.

Many traditional CMSs can also expose an API, and many headless setups include a preview mode for editors. The line between them is about where the public pages are built, and who owns that code.

#The trade-offs side by side

Traditional CMSHeadless CMS
Applications to runOneAt least two: the content API and the front end
Public pagesRendered by the CMS with templatesRendered by a separate front end
Editor previewBuilt inHas to be built or configured
Several channels (web, app, kiosk)Possible, less naturalThe main reason to choose it
Front end freedomLimited by the theme systemAny framework the team prefers
Plugins for common featuresUsually manyOften built by your own team
Skills neededOne stackBack end and front end, plus the contract between them

What headless gives you

  • One content source for several channels. A product description or a news item is written once and shown on the website, in the mobile app and anywhere else that reads the API.
  • A free choice of front end. The web team can use React, Vue or any other framework without working inside a CMS theme system.
  • Clear separation. The API and the front end can be deployed and scaled independently, and a design change does not touch the content store.

What headless costs you

  • More to build and operate. Two applications mean two deployments, two sets of dependencies and an API contract that both sides must respect.
  • Preview and editor comfort. In a traditional CMS, editors see the page as it will look. In a headless setup, previewing a draft on the real front end needs extra work.
  • SEO work moves to the front end. Search engines need proper HTML, titles, metadata and sitemaps. A headless front end has to produce them, usually with server-side rendering or static generation.
  • Fewer ready-made features. Forms, menus, redirects and search that a traditional CMS gets from a plugin often have to be built on both sides.

#When a traditional CMS is the better fit

  • You run one website or blog, and editors need to write, schedule and publish without a developer.
  • The team is small and knows one stack well. One application is easier to host, back up and update.
  • You want a working site quickly and can live within the structure a theme or template layer provides.
  • The content is mostly pages and articles that appear only on that website.

If the site later needs to feed an app, many traditional CMSs can add an API alongside the public pages. You do not have to decide everything on the first day.

#When headless is the better fit

  • The same content appears on a website and in a mobile app, or on several sites.
  • The public side is really a web application: user accounts, dashboards, interactive tools, with content being one part of it.
  • You have front end developers who want full control over performance, design and routing.
  • Several teams work on different parts, and a documented API gives them a stable boundary.

Before you choose headless, ask who will build preview, sitemaps, redirects and metadata, and who will keep the API documented and versioned. If nobody owns these, the site will be harder to run than a traditional one. The choice of language behind the API matters too; our comparison of Laravel and Go for an API covers that decision.

#Two open-source examples: PN Press and NextPressKit

PN Scripts publishes two MIT-licensed projects on GitHub that show both approaches. Both are source code you host yourself; PN Scripts does not run either one as a hosted service.

PN Press is a traditional CMS for blogs and company news. It runs on Laravel 13 with a Filament 5 admin panel at /admin, where editors manage posts and categories on one screen: title, URL slug, excerpt, body, status, publish date and featured image. Access is limited to admin and editor roles through Spatie Permission. The same application renders the public blog index, post pages and category archives as server-rendered Blade pages styled with Tailwind CSS, and drafts never appear on the public site. It runs one site, and it deliberately leaves out comments, tags, a media library beyond the featured image, and multi-tenancy. If you are weighing an admin built on Filament against one written from scratch, see our article on Filament or a custom admin panel.

NextPressKit follows the separated approach. It is two repositories: a web front end on TanStack Start, React, TypeScript, Tailwind CSS and Shadcn UI, and an API on Go, Gin and PostgreSQL. The API handles JWT login through HttpOnly cookies or Bearer tokens, roles and permissions, posts, pages, categories, tags and media uploads. It is documented in OpenAPI, with Postman collections for testing, and modules can be switched on or off in the configuration. It is a starting point for a web application where content is one part of the product, such as a SaaS MVP or an internal tool that needs login, permissions and content management.

The two projects reflect the choice this article describes. PN Press is the simpler path when a website with a blog is the goal. NextPressKit suits a product where a documented API and a separate front end are worth the extra moving parts.

#How PN Scripts can help

PN Scripts builds content platforms in both styles and can adapt either open-source project to your needs. The written scope explains which approach fits your content and channels before any work starts. You can read the details and the full stack on the NextPressKit product page.

Keep reading

Keep reading

Comments

Comments

Be the first to leave a comment.

Leave a comment

Next step

pnscripts.com/contact

Talk to the team

Ask about an article, or tell us about a project you want built. We reply within one business day.

Write to us

The PN Scripts family

Other PN Scripts sites

Hosting, games and the blog each have their own site, run by the same company.

  • pnscripts.com

    PN Scripts

    Software engineering

    Custom web, mobile, API and game development, plus our open-source products and plugins.

  • games.pnscripts.com

    Games

    Games and game servers

    The home for PN Scripts games and game servers. The catalog is empty for now and fills up as titles and servers go live.

  • hosting.pnscripts.com

    Hosting

    Hosting and infrastructure

    Shared hosting, KVM VPS, dedicated servers and domains, from the same company that builds your project.

  • blog.pnscripts.com

    Blog

    Articles and field notes

    Plain articles on hosting, servers, domains and security, written by the people who work with them.

    You are here