byteNative
CMS & Content

Payload

A TypeScript-native headless CMS right next to your code.

What is Payload?

Payload is a headless CMS written in TypeScript from the ground up that lives right next to your application code, rather than standing beside it as a separate platform. You define your collections as code, and Payload derives the admin panel as well as a type-safe local API and a REST and GraphQL interface from them. Because configuration and content are type-safe, mistakes surface in the editor long before they reach production. In its current version it integrates directly with Next.js and shares database and deployment with the app, which makes it especially coherent for developer-centric projects.

More in the documentation

How we use it

We use Payload when the CMS should be part of your TypeScript application rather than a foreign system we wire up laboriously. Because the types derive from the collection configuration, we access content type-safely in the frontend and typos in field names surface at build time. For projects that run on Next.js anyway, Payload shares database and deployment with the app, which simplifies operations considerably.

ts
import { getPayload } from "payload";
import config from "@payload-config";

const payload = await getPayload({ config });

const posts = await payload.find({
    collection: "posts",
    where: { status: { equals: "published" } },
    limit: 10,
});
local API reads from the database type-safely

Good to know

In server code use the local API instead of an HTTP call to your own REST interface. It talks to the database directly, saves you the network roundtrip and gives you the generated types without a detour.

00CMS & Content

More tools we work with in the same area.

Which technology fits you?

You don't have to decide that, it's our job. Tell us about your plans.