Skip to content
c17 .ioJoin list

Stacks / Backend

Medium

Payload / Strapi

A headless CMS you host. Payload and Strapi are MIT. Directus is source-available (MSCL) — not the OSI path.

The problem

Contentful Lite is $300/month. Sanity Growth is $15/seat/month. Strapi Cloud Starter is $35/project/month. You wanted a content API and an admin you can move. Payload is MIT (Node + Postgres or Mongo). Strapi's self-hosted Community Edition is MIT — Cloud is the hosted meter this page replaces. Directus is MSCL-1.0-GPL (internal use OK; Competing Use is forbidden; GPL-3.0 after four years) — do not call it open source.

Replaces

Contentful / Sanity / Strapi Cloud

Replace ContentfulReplace SanityReplace Strapi Cloud

Estimated SaaS saved

$3,600

per year, small team, before lock-in

Start on Railway

Ghost / WordPress if this is a site, not a headless API

Sponsor this stack Tip jar

Placeholder: Payload (Node + Postgres) or Strapi Community + a database and a volume for uploads. No one-click template in this repo yet — Start on Railway. Do not deploy Directus and call it open source.

The stack

Cost table

You stop payingTypical / yearSelf-host instead
Contentful Lite$3,600Payload or Strapi + Postgres
Strapi Cloud Starter / Pro$1,200Strapi Community on the same box

Agent setup prompt

Replace Contentful, Sanity, or Strapi Cloud with Payload (preferred) or self-hosted Strapi Community.

Do not install Directus and call it open source — it is MSCL (source-available, Competing Use forbidden).
- Payload: Node + Postgres (or Mongo), bind HTTP to 0.0.0.0:$PORT, uploads on a volume.
- Strapi Community: Node + a database. This is not Strapi Cloud.
- Rebuild the three content types you actually query. Lock the admin. Write AGENT_PROMPT.md.

Also as markdown: /stacks/directus-cms.md

FAQ

Why not Directus?
Directus is useful, and it is not OSI open source. The current license is MSCL-1.0-GPL: internal use is fine, selling a competing hosted Directus is not, and GPL-3.0 only kicks in after four years. Payload and Strapi Community are MIT today.
Payload or Strapi?
Payload if you want TypeScript collections next to a Next.js app. Strapi if the team already knows that admin. Ghost is a publisher, not a headless API — /replace/wix.