4.0 KiB
title: Payload created: 2026-06-08 updated: 2026-06-08 type: app tags: [catalogue, content-management, app-marathon-batch-rattrapage-2] confidence: high contested: false sources: [https://selfh.st/apps/?tag=Content+Management&app=payload]
📰 Payload
CMS headless TypeScript open source : TypeScript natif, type-safe, auto-hébergeable, parfait pour les stacks Next.js.
📋 Informations Générales
| Champ | Valeur |
|---|---|
| Site web | payloadcms.com |
| GitHub | payloadcms/payload |
| License | MIT |
| Langage | TypeScript |
| Étoiles GitHub | 36k ⭐ |
| Catégorie | [[cat-content-management |
📝 Description
Payload est un CMS headless moderne 100% TypeScript, conçu pour s'intégrer nativement dans une application Next.js (mais utilisable aussi en standalone). Sa force : tout est défini en TypeScript code-first (Collections, Fields, Hooks, Access), pas de GUI à configurer à la souris — ce qui rend le code testable, versionnable, type-safe. Inclut un admin UI auto-généré, une auth, des uploads, un access control granulaire par collection, et un plugin ecosystem (multi-tenants, i18n, form-builder, lexical editor, etc.).
Différence vs Strapi / Directus : Strapi et Directus sont des monorepos Node.js avec leur propre serveur ; Payload s'installe dans votre app Next.js (ou Express), ce qui simplifie le déploiement et élimine un service à maintenir.
Pour qui : équipes TypeScript / Next.js qui veulent un CMS headless, type-safe, auto-hébergeable, sans la complexité d'un Strapi ou la GUI vieillissante d'un Directus.
🚀 Installation
Standalone (Next.js + Payload)
npx create-payload-app -n my-payload-app
cd my-payload-app
DATABASE_URI=postgres://user:pass@db:5432/payload PAYLOAD_SECRET=xxx npm run dev
Docker Compose (production)
version: '3.8'
services:
payload:
build: .
container_name: payload
restart: unless-stopped
ports:
- "3000:3000"
environment:
DATABASE_URI: postgres://payload:change-me@db:5432/payload
PAYLOAD_SECRET: change-me-32-bytes
PAYLOAD_PUBLIC_SERVER_URL: https://payload.example.com
NEXT_PUBLIC_SERVER_URL: https://payload.example.com
depends_on:
- db
labels:
- "traefik.enable=true"
- "traefik.http.routers.payload.rule=Host(`payload.example.com`)"
- "traefik.http.routers.payload.entrypoints=websecure"
- "traefik.http.routers.payload.tls.certresolver=letsencrypt"
- "traefik.http.services.payload.loadbalancer.server.port=3000"
db:
image: postgres:16-alpine
container_name: payload-db
restart: unless-stopped
environment:
POSTGRES_DB: payload
POSTGRES_USER: payload
POSTGRES_PASSWORD: change-me
volumes:
- payload_db:/var/lib/postgresql/data
volumes:
payload_db:
🔄 Alternatives
Open Source
- app-strapi — CMS headless Node.js leader, GUI-first, REST/GraphQL.
- Directus — Headless Node.js avec admin UI data-first.
- app-grav — Flat-file PHP, plus simple, pas headless.
Propriétaires
- Contentful — Headless SaaS leader, enterprise.
- Sanity — Headless SaaS avec studio personnalisable.
- Strapi Cloud — Version cloud de Strapi.
🔐 Sécurité
- Authentification : intégrée (email/password, API keys, JWT, sessions). SSO via plugins tiers.
- Access Control : fonctions TypeScript par collection/field, granulaires.
- Type-safety : moins de risque d'injection, le typage TS force à valider les inputs.
📚 Ressources
Pages Liées
- cat-content-management — Catégorie Content Management
- app-strapi — Concurrent open source
- app-grav — CMS flat-file open source
- recettes-docker-compose — Templates Docker