Open-source Payload CMS plugins for A/B testing, content presets, inline comments, AI translation, and scheduled publishing on serverless. Drop any of them into an existing Payload project, or get all of them pre-wired into a production setup — Payload 3, Next.js 16, Postgres, page builder, SSO, semantic search — in the Ideal CMS starter that lives in this repo at apps/cms.
Scaffold the Ideal CMS starter into a standalone repo:
npx @focus-reactive/create-ideal-cms new-cms-projectInteractive prompts collect a project name, brand color, Postgres URL, and optional OpenAI / Vercel Blob tokens. The scaffolder copies apps/cms, installs dependencies, and initializes git.
To add an individual plugin to an existing Payload project, see the install command under each plugin below. To try the plugins locally first, see Run Demo Locally.
At FocusReactive we build projects on different CMSs — Sanity, Storyblok, Strapi, and Payload. Each platform has its own unique features and limitations, and sometimes a project needs a feature one CMS has but another doesn't.
So we decided to build all of that into one open-source project — we call it Ideal CMS. Best features from every CMS we've worked with, available as Payload plugins, plus the boilerplate setup we'd write anyway on every project: a block-based page builder, locale-scoped semantic search, SSO, deployment configuration. Pick individual plugins for an existing Payload project, or start from the full starter — same plugins either way. This often helps our clients free up budget for things we believe should be included from day one.
a-b-testing.mp4
Native experiments with a dynamic percentage of traffic going to each content variant. Control everything from the same page you're working on — page variants, middleware, and analytics adapters included.
npm install @focus-reactive/payload-plugin-ab
yarn add @focus-reactive/payload-plugin-ab
pnpm add @focus-reactive/payload-plugin-ab
bun add @focus-reactive/payload-plugin-ab- Package:
@focus-reactive/payload-plugin-ab
Multiple pre-configured block configurations you can use to build up your pages. It's like having multiple versions of default values — because content teams prefer editing over creating from scratch.
npm install @focus-reactive/payload-plugin-presets
yarn add @focus-reactive/payload-plugin-presets
pnpm add @focus-reactive/payload-plugin-presets
bun add @focus-reactive/payload-plugin-presetscomments.mp4
A way to collaborate inside the CMS. Inline field comments, mentions, annotations — helpful for both the content team and developers, letting everyone leave feedback directly inside the admin.
npm install @focus-reactive/payload-plugin-comments
yarn add @focus-reactive/payload-plugin-comments
pnpm add @focus-reactive/payload-plugin-comments
bun add @focus-reactive/payload-plugin-commentsPayload already has a localization plugin, so we built a plugin to do AI translations on top of it — fill in every localized field with one click. Pluggable providers (OpenAI included), bulk translation from list view, and full Lexical rich-text support.
npm install @focus-reactive/payload-plugin-translator
yarn add @focus-reactive/payload-plugin-translator
pnpm add @focus-reactive/payload-plugin-translator
bun add @focus-reactive/payload-plugin-translatorpublish-scheduling.mp4
Payload CMS natively supports scheduled publishing, but not for serverless platforms like Vercel. Since that's where we deploy most of our projects, we built a plugin that makes it work.
npm install @focus-reactive/payload-plugin-scheduling
yarn add @focus-reactive/payload-plugin-scheduling
pnpm add @focus-reactive/payload-plugin-scheduling
bun add @focus-reactive/payload-plugin-scheduling| Package | Version | Description |
|---|---|---|
@focus-reactive/payload-plugin-ab |
A/B testing plugin — page variants, middleware, analytics adapters | |
@focus-reactive/payload-plugin-presets |
Presets plugin — save and apply reusable block configurations | |
@focus-reactive/payload-plugin-comments |
Comments plugin — inline field comments, mentions, annotations, and collaboration | |
@focus-reactive/payload-plugin-translator |
AI translation plugin — one-click translations on top of Payload's localization | |
@focus-reactive/payload-plugin-scheduling |
Schedule publication plugin — schedule documents to publish at a future date |
This repo ships two ready-to-run Payload apps:
apps/dev— minimal sandbox with every plugin wired up, backed by SQLite. Use this to try the plugins or hack on them.apps/cms— full Ideal CMS starter on Postgres (block-based page builder, SSO, semantic search, AI translations). Seeapps/cms/README.mdfor setup, or scaffold a standalone copy withnpx @focus-reactive/create-ideal-cms.
The steps below cover the apps/dev sandbox.
- Bun installed
- Node.js
^18.20.2or>=20.9.0
-
Clone the repository
git clone https://github.com/focusreactive/payload-plugins.git cd payload-plugins -
Install dependencies
bun install
-
Configure environment variables
Create
apps/dev/.envwith the required values:cat > apps/dev/.env <<EOF DATABASE_URL=file:./dev.db PAYLOAD_SECRET=replace-me-with-any-random-string EOF
-
Start the dev server
bun run dev
-
Open the admin panel
Visit http://localhost:4040/admin and create your first admin user. Every plugin in this repo will be loaded and ready to try.
Let's grow the Payload CMS ecosystem together. Issues, discussions, and PRs are all welcome.