# Payload / Strapi

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

**Replaces:** Contentful / Sanity / Strapi Cloud

**Tier:** Medium

## 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.

## Stack

- [Payload](https://payloadcms.com) — MIT headless CMS and admin (Node)
- [Strapi](https://strapi.io) — MIT self-hosted CMS (Community Edition; Cloud is the vendor)

## Estimated SaaS cost saved

| You stop paying | Typical / year | Self-host instead |
|---|---:|---|
| Contentful Lite | $3,600 | Payload or Strapi + Postgres |
| Strapi Cloud Starter / Pro | $1,200 | Strapi Community on the same box |

**About $3,600 / year** on a small team, before you count lock-in.

## Deploy on Railway

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.

[Start on Railway](https://c17.io/go/railway/directus-cms?from=%2Fstacks%2Fdirectus-cms.md)

[Ghost / WordPress if this is a site, not a headless API](https://c17.io/stacks/ghost-cms)

## AGENT_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.
```

## 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.

Source: https://c17.io/stacks/directus-cms
