Setting up Payload CMS: more hassle than Sanity, but a nice place to land

This blog is a twin. The same theme, the same content model and the same kind of static site as the Sanity test blog, but with Payload CMS behind it. The point was to compare the two honestly, from the perspective of someone who has spent years with PHP content systems. Here is what the Payload side taught us.

It is one app, and that changes everything

Sanity is a hosted content store with a separate editing app. You never run a server. Payload is the opposite: the admin panel, the API, the database access and the file uploads all live in one Node process that you host yourself. If you come from a PHP CMS this feels familiar, almost comforting. Your content is a SQLite file and a folder of images on a machine you control, and a backup is a copy.

The flip side is that every operational chore is yours too: the process manager, the memory, the migrations, the SSL, the restarts. With Sanity none of that existed.

Where the hassle was

Defining the content model and wiring up the site was quick and pleasant. Almost all of the friction was in getting the thing to run on a small production server.

What was nice

Verdict so far

Sanity got us to a working blog faster, because the hard part was somebody else's server. Payload took an afternoon of hosting detours, most of them about memory and folder conventions rather than the CMS itself. Once up, though, it is the setup that is easier to explain: one app, one database file, one folder of images, and a plain static site in front. If you already run your own servers and like knowing where everything lives, that trade is a good one.

Boring choices, few dependencies, and a server you can read the logs on.
Back to all blog posts