Saltar a contenido

RF-000 — Plataforma base de gestión de contenido (Payload 3.61 stock)

Alcance. Documentar únicamente las capacidades provistas por Payload 3.61.1 y por el website template oficial del que deriva el repositorio, sin desarrollo propio. El modelado propio se documenta en los requisitos siguientes de esta serie y en el Inventario de entidades.

Requisito

Disponer de un sistema de gestión de contenido headless que resuelva sin desarrollo propio el modelado de entidades por configuración, la administración del contenido por parte de editores no técnicos, el control de acceso por entidad y operación, el versionado con borradores y publicación programada, y la exposición del contenido como API de lectura para un consumidor externo.

Solución adoptada: adoptar Payload 3.61.1 sobre Next.js 15 y React 19, con adaptador PostgreSQL, desplegado como una única aplicación que sirve el panel de administración, la API de contenido y el sitio público heredado del template.

Arquitectura funcional

flowchart TB
    E([Editor]) --> ADM[Panel de administración<br/>Next.js · React]
    SF([Storefront externo]) --> API
    ADM --> API[Capa de API<br/>REST · GraphQL · Local]
    CFG[[payload.config.ts<br/>colecciones · globales · bloques · campos]] --> ADM
    CFG --> API
    API --> ACC[Control de acceso por operación]
    ACC --> DB[(PostgreSQL)]
    CFG --> TS[payload-types.ts<br/>tipos generados]
    PLG[Plugins: seo · redirects · form-builder<br/>search · nested-docs] --> CFG

Capacidades del framework

Capacidad Alcance de fábrica
Modelado por configuración Colecciones, globales, campos, grupos, arrays y bloques declarados en TypeScript; el esquema de base de datos se deriva de esa declaración
Panel de administración Interfaz generada a partir del esquema: listados, formularios, filtros, búsqueda y carga de archivos, sin desarrollo de UI
Autenticación y usuarios Colección de usuarios del panel, sesión, recuperación de contraseña y control de acceso por operación (create, read, update, delete)
Control de acceso Funciones por colección que devuelven booleano o filtro de consulta; habilita lectura pública selectiva
Versionado y borradores Historial de versiones, borradores, autoguardado y publicación programada por documento
Live preview Previsualización del documento en edición con puntos de corte móvil, tableta y escritorio
API de lectura y escritura REST y GraphQL generadas del esquema, más API local para uso en servidor; paginación, filtros y profundidad de relaciones
Tipos generados payload-types.ts derivado de la configuración, consumible por el cliente externo
Carga de archivos Colecciones de tipo upload con validación de tipo MIME, tamaños derivados, punto focal y miniatura de administración
Texto enriquecido Editor Lexical con funciones configurables y bloques embebidos
Migraciones Generación y aplicación de migraciones de esquema sobre PostgreSQL
Trabajos programados Cola de tareas con control de acceso por token

Extensiones instaladas de fábrica

Plugin Aporte
plugin-seo Grupo meta en páginas y entradas, con generación de título y URL
plugin-redirects Colección redirects para páginas y entradas
plugin-form-builder Colecciones forms y form-submissions, sin módulo de pago
plugin-search Colección search como índice de entradas de blog
plugin-nested-docs Anidamiento de categorías con generación de URL jerárquica
payload-cloud Integración con la nube de Payload; sin uso en esta instalación

Andamiaje heredado del website template

El repositorio deriva del website template oficial. Lo siguiente existe sin haber sido desarrollado ni modificado para este proyecto:

Pieza Estado de uso
Colecciones pages, posts, categories, users pages en uso como contenedor de bloques; el blog no se consume desde el storefront
Globales header y footer Pertenecen al sitio público heredado, no al storefront
Bloques cta, content, mediaBlock, archive, formBlock Con componente React propio del template
Sitio público en src/app/(frontend)/ Sostiene el live preview de los editores
Seed de contenido de ejemplo y dos pruebas de scaffold Sin función en la operación

Reglas heredadas de la plataforma

  • Derivar el esquema de la configuración: todo cambio de modelo exige generar y aplicar migración.
  • Publicar como público solo lo declarado explícitamente: la lectura anónima es una decisión por colección, no un valor por defecto.
  • Conectar a la base de datos en tiempo de compilación: el build falla si PostgreSQL no es alcanzable.
  • Restringir el consumo por origen mediante la lista CORS de la configuración.

Fuera del alcance stock

Capacidades requeridas por el negocio que Payload no cubre de fábrica y que motivan el desarrollo propio documentado en los requisitos siguientes:

  • Piezas gráficas reutilizables con enlace y botón — RF-001.
  • Carruseles con programación por slide — RF-002.
  • Menú de navegación del storefront — RF-003.
  • Bloques comerciales sin render local — RF-004.
  • Sistema uniforme de destinos y descriptores de filtro — RF-005.
  • Almacenamiento y entrega de medios fuera del servidor — RF-006.
  • Consulta de catálogo: el CMS nunca consulta productos; los descriptores los resuelve el storefront contra Algolia.

Criterios de aceptación

# Criterio
1 Administrar contenido desde el panel sin desarrollo de interfaz por entidad
2 Exponer por REST y GraphQL toda entidad declarada, con filtros y paginación
3 Restringir la escritura a usuarios autenticados y habilitar lectura anónima por colección
4 Editar un documento como borrador, previsualizarlo y publicarlo en una fecha futura
5 Derivar tipos TypeScript de la configuración para consumo del storefront
6 Aplicar un cambio de esquema mediante migración versionada