PageKit: el creador de sitios GrapesJS autoalojado, con el código fuente incluido. Obtener acceso anticipado

Editor CMS headless

Editor Visual CMS headless con GrapesJS

Añade un editor visual de arrastrar y soltar a tu CMS headless sin tocar tu API de contenido, tu frontend ni tu infraestructura.

Arrastrar y soltar visualComponentes personalizadosBloques reutilizablesREST & GraphQLTu CMSTu frontendTus datos
Una capa de edición visual sobre una API de contenido existente: la biblioteca de componentes a la izquierda, la página en el lienzo, las propiedades del componente seleccionado a la derecha.
Míralo funcionando

Esta es la superficie de edición que estás añadiendo

La pantalla de arriba es un prototipo de la disposición, dibujado en CSS para que la página no cueste nada. El motor de edición que hay detrás es real y público: abre la demo oficial de GrapesJS, arrastra una sección al lienzo, y estás viendo los mismos controles de lienzo, árbol de componentes y estilo que tu equipo de contenido tendría encima de tu propio CMS.

Prueba el editor

La demo funciona en grapesjs.com con almacenamiento en el navegador. Nada en ella toca tu contenido.

El valor

Dale a tu CMS headless una experiencia de edición visual

Un CMS headless le da a tu aplicación una base de contenido API en primer lugar. Lo que no siempre aporta a quienes escriben el contenido es una forma de ver la página mientras la construyen.

Los campos estructurados son excelentes para un artículo, un registro de producto o un documento de configuración. No encajan bien con una página cuyo significado es su diseño — una página de campaña, un recorrido de reportajes, una comparación de precios. Para esos, las personas que hacen el trabajo suelen pedir la misma lista corta:

Lo que piden los editores

  • un lienzo visual
  • arrastrar y soltar
  • Secciones de página reutilizables
  • Edición responsiva
  • Plantillas
  • Configuración de componentes
  • Vista previa en directo

GrapesJS proporciona esa capa de edición visual sin obligarte a cambiar tu CMS.

La brecha

El CMS headless te da contenido. Tus usuarios siguen necesitando un editor.

Una arquitectura headless separa el contenido de la presentación, por eso mismo deja un hueco de edición: el CMS conoce los campos, el frontend conoce el renderizado y nada intermedio conoce la página. Añadir una capa de edición visual cierra ese hueco sin deshacer ninguno de los lados.

CMS headless tradicional

  • CMS
  • Contenido estructurado
  • API
  • Frontend

Falta

  • Edición visual
  • Arrastrar y soltar
  • Composición de páginas
  • Diseño responsivo

CMS headless + GrapesJS

  • CMS
  • Contenido estructurado
  • Editor visual GrapesJS
  • API
  • Frontend
La misma pila, con una capa añadida. Nada que esté arriba ni por debajo cambia.

Añade edición visual sin renunciar a la arquitectura headless.

División del trabajo

¿Por qué añadir un editor visual a un CMS headless?

Porque cada una de las tres capas es buena en algo que las otras dos no, y una capa de edición visual es la única que nadie te entrega. Aquí tienes quién es dueño de qué una vez que el editor está en su lugar.

  • Tu CMS headless

    La infraestructura de contenidos que ya gestionas.

    • Contenido
    • Datos estructurados
    • Medios de comunicación
    • Usuarios
    • Publicación
    • APIs
  • GrapesJS

    La capa de edición visual que vas a añadir.

    • Lienzo visual
    • Arrastrar y soltar
    • Componentes
    • Bloques
    • Estilo
    • Edición responsiva
    • Composición visual de la página
  • Tu frontend

    Sin cambios. Conserva todo lo que poseía antes.

    • Renderizado
    • Enrutamiento
    • Lógica de aplicación
    • Experiencia de usuario
    • Despliegue

Mantén la arquitectura. Mejora la experiencia de edición.

Arquitectura

Cómo funciona un editor visual CMS headless

Cuatro capas, en el orden en que pasa una partida guardada. El editor nunca se comunica con tu base de datos ni renderiza tus páginas de producción: lee y escribe un documento a través de un endpoint que controlas.
  1. GrapesJS

    La experiencia de edición visual: lienzo, árbol de componentes, bloques, controles de estilo, anchos de dispositivos.

  2. REST / GraphQL

    Persistencia a través de REST, GraphQL o tu propio API. Un adaptador de almacenamiento tiene dos funciones: una que carga y otra que guarda.

  3. CMS headless

    Tu infraestructura de contenido existente. Mantiene el esquema, la biblioteca multimedia, los usuarios y las reglas de publicación que ya tiene.

  4. API de contenido

    El API de entrega que ya leen tus frontends. Añadir un editor añade un escritor, no una segunda fuente de contenido.

  5. Entrega

    Cualquier frontend que consuma tu CMS API.

    • Next.js
    • Nuxt
    • React Native

Una fuente de contenido. Múltiples frontends.

Observa cómo el editor se integra en una aplicación
Sin migración

No necesitas cambiar tu CMS

La capa de edición se conecta a través del mismo API que tu frontend ya llama. Tanto si ejecutas Strapi, Contentful, Sanity, Directus, Hygraph, Prismic, Payload o un CMS que escribió tu propio equipo, el punto de integración es un par de endpoints que cargan y guardan un documento.

Estas plataformas pueden integrarse a través de sus APIs, con la implementación exacta dependiendo del modelo de contenido de CMS y API. GJS.Market no publica una integración oficial para la mayoría de ellas, y esta página nunca implica lo contrario.

Quédate con tu CMS. Conserva tu frontend. Añade un editor visual mejor.

Compatibilidad

Funciona con el CMS que ya usas

Las tarjetas que aparecen a continuación describen la superficie de integración que ofrece cada plataforma, no una afirmación de soporte. Una de ellas tiene un plugin de almacenamiento comunitario en el catálogo GJS.Market; el resto son integraciones que tú o un socio de implementación construiríais contra su API publicado.

  • Strapi

    REST · GraphQL

    Autoalojado, con tipos de contenido que definas. El documento editor suele convertirse en un campo JSON en un tipo de colección de páginas.

  • Contentful

    REST · GraphQL

    Entrega y gestión separadas APIs. El editor escribe a través dla API de gestión; tu frontend sigue leyendo el de entrega.

  • Sanity

    GROQ · GraphQL

    Portable Text y un almacén de documentos. El documento editor está junto a tus campos existentes en lugar de reemplazarlos.

  • Directus

    REST · GraphQL

    La única plataforma de esta lista con un plugin de almacenamiento comunitario ya publicado en GJS.Market.

    Ver el plugin
  • Hygraph

    GraphQL

    GraphQL primero, así que el adaptador es una consulta y una mutación en lugar de dos URLs.

  • Prismic

    REST

    Contenido basado en slices. Los bloques del editor se asignan limpiamente a los slices cuando mantienes el conjunto de bloques alineado con ellos.

  • Payload

    REST · GraphQL

    Colecciones definidas por código, de modo que el campo en el que escribe el editor se declara en el mismo repositorio que el editor.

  • CMS personalizado

    REST · GraphQL · Personalizado

    Cualquier cosa que pueda responder a una solicitud de carga y aceptar una solicitud de guardado. Dos endpoints es todo el contrato.

El único adaptador con nombre CMS en el catálogo

Directus Storage es un plugin de almacenamiento para GrapesJS gratuito y publicado por la comunidad, extraído del proyecto Silex. Es una referencia realmente útil sobre cómo se construye un adaptador — comandos de autenticación, cargar, guardar — pero su propia ficha señala que apunta a un SDK de Directus antiguo, así que trátalo como un punto de partida que leer, no como un producto soportado que instalar.

Directus Storage
Modelo de contenido

Tu CMS. Tu modelo de contenido.

Un editor visual solo es útil en una configuración sin interfaz si lo que produce sigue encajando con el esquema que diseñaste. En GrapesJS, un tipo de componente personalizado declara su propio traits editable — y esos traits son donde van los nombres de los campos CMS.

  1. Componente GrapesJS
  2. Bloque visual
  3. Tu esquema de contenido
  4. CMS

Ejemplo práctico

hero-section

CampoTipo
  • titlecadena
  • subtitleTexto
  • imageMedios
  • buttonObjeto
  • metadataJSON
Un tipo de componente, el traits que ve un editor, y los campos que ya declara tu entrada CMS — deliberadamente los mismos nombres.
Declarar los mismos campos en el componentejavascript
editor.DomComponents.addType('hero-section', {
  model: {
    defaults: {
      // Traits become the fields your CMS entry already has.
      traits: [
        { name: 'title',    label: 'Title' },
        { name: 'subtitle', label: 'Subtitle' },
        { name: 'image',    type: 'image' },
        { name: 'ctaHref',  label: 'Button link' },
      ],
    },
  },
});

El editor visual debería adaptarse a tu modelo de contenido, no obligar a tu CMS a adaptarse al editor.

Formato de almacenamiento

¿Qué deberías guardar?

Dos representaciones salen del mismo editor y responden a preguntas diferentes. Una puede reabrirse para editar; la otra puede renderizarse. La mayoría de los montajes de producción mantienen ambos, en columnas diferentes, y eso es una decisión de diseño más que una regla.

  • El documento del proyecto

    1. Datos de proyecto / componentes
    2. Fuente editable
    3. Abrir más tarde
    editor.getProjectData()

    El árbol de componentes, estilos, páginas y recursos como datos estructurados. Es lo que el editor necesita para reconstruir la sesión exactamente como se dejó, que es la única representación que sobrevive intacta a una segunda ronda de edición.

    Úsalo cuando: Alguien volverá a abrir esta página en el editor.

  • El marcado renderizado

    1. HTML + CSS
    2. Salida renderizada
    3. Vista previa / publicación
    editor.getHtml() + editor.getCss()

    Marcado y hoja de estilo generados a partir del mismo árbol. Es lo que consume una iframe de previsualización, una exportación estática o una cadena de publicación, y no es fiable reimportable como sesión de edición.

    Úsalo cuando: Algo más abajo tiene que renderizarlo sin el editor.

Almacena la representación que tu editor necesita para futuras ediciones y genera la salida que requiere tu frontend o pipeline de publicación.

Casos de uso

¿Qué puedes construir con un editor visual CMS headless?

La misma capa de edición, apuntando a diferentes partes de tu producto. Cada una de estas tiene su propia página en GJS.Market, porque cada una plantea diferentes preguntas una vez que superas el propio editor.

Funciones del editor

Todo lo que tus editores necesitan

Qué viene con el motor, qué añade un plugin y qué sigue siendo el trabajo de tu aplicación. La distinción importa cuando estás definiendo el alcance del trabajo en lugar de leer una lista de funciones.

  • Arrastrar y soltarNúcleo GrapesJS
  • ComponentesNúcleo GrapesJS
  • BloquesNúcleo GrapesJS
  • Gestor de estilosNúcleo GrapesJS
  • Edición responsivaNúcleo GrapesJS
  • CapasNúcleo GrapesJS
  • RecursosPlugin
  • PlantillasPlugin
  • Vista previaTu aplicación
Proporcionado porTu aplicaciónNúcleo GrapesJSPlugin

GrapesJS no entrega CMS, ni hosting, ni cuentas de usuario ni modelo de permisos. Esos se quedan con tu CMS y tu aplicación.

Elección por tipo de contenido

¿Editor CMS o creador de páginas?

Esta no es una decisión que tomes una sola vez para todo el producto. Es una decisión que tomas por tipo de contenido, y la mayoría de los equipos acaban ejecutando ambos.

  • Editor de contenido estructurado

    La edición basada en formularios de tu propio CMS, impulsada por el esquema.

    Mejor para

    • Artículos
    • Texto
    • Campos estructurados
    • Contenido simple
  • Creador visual de páginas

    Un lienzo, donde la disposición es el contenido.

    Mejor para

    • Landing pages
    • Páginas de marketing
    • Disposiciones personalizadas
    • Sitios web visuales
    • Composición compleja de páginas

Utiliza campos estructurados donde la estructura importa. Utiliza la edición visual donde el diseño y la composición importen.

Flujo de trabajo

Previsualiza el contenido antes de publicarlo

La edición y la publicación son eventos separados, y una configuración headless facilita su aplicación: el borrador del documento y el documento publicado son filas diferentes, leídas por tokens distintos.

  1. 1

    Borrador CMS

    La entrada existe en tu CMS con estatus de reclutamiento.

  2. 2

    Editor GrapesJS

    Alguien compone la página en el lienzo.

  3. 3

    Vista previa

    Tu interfaz representa el borrador en cualquier ancho de dispositivo.

  4. 4

    Reseña

    Una segunda persona lee la página tal y como la verán los visitantes.

  5. 5

    Aprobar

    La aprobación la registra tu aplicación, no el editor.

  6. 6

    Publicar

    Tu CMS promueve el reclutamiento y tu frontend se revalida.

Puerta humana

Entre qué debería poder alternar un revisor

  • Escritorio
  • Tableta
  • Móvil
  • Borrador
  • Publicado

Edición separada de la publicación.

Multicanal

Crea una vez. Entrega en todas partes.

Este es el beneficio que ya adquiriste al elegir un CMS headless, y añadir un editor visual no lo gasta — siempre que lo que escriba el editor permanezca en el contenido API en lugar de en una plantilla.

CMS headless

Un contenido, API, leído por cada canal

  • Páginas
  • Bloques
  • Recursos
  • Sitio web

    Next.js

  • Móvil

    React Native

  • Aplicación

    Nuxt

Cada canal interpreta la misma carga útil con su propio renderizador.

Una arquitectura headless permite que la misma infraestructura de contenido sirva a diferentes frontends.

Multiinquilino

Construye un editor CMS headless multiusuario

Si el editor forma parte de un producto y no una herramienta interna, cada organización cliente necesita sus propias páginas, recursos y plantillas — y nunca debe ver las de nadie más.

Tu aplicación

La división se hace cumplir aquí, en el servidor

  • Organización A

    • Páginas
    • Recursos
    • Plantillas
    • Permisos
  • Organización B

    • Páginas
    • Recursos
    • Plantillas
    • Permisos
  • Organización C

    • Páginas
    • Recursos
    • Plantillas
    • Permisos
Un editor, un contenido, API, datos separados por organización.

GrapesJS no ofrece multitenencia propia. El aislamiento entre inquilinos, la marca por inquilino y las reglas de publicación son responsabilidad de tu aplicación, y cada llamada de almacenamiento debe limitarse en el servidor.

Marca blanca

Posee toda la experiencia de edición

Si tus clientes usan el editor, debería parecer parte de tu producto. Los paneles, el conjunto de iconos, la biblioteca de bloques y las plantillas son configurables, y la aplicación que lo rodea proporciona todo lo que el editor no.

  • Logotipo personalizado
  • Colores personalizados
  • Interfaz personalizada
  • Bloques personalizados
  • Plantillas personalizadas
  • Roles
  • Permisos

Los roles y permisos están en esa lista porque un editor de marca los necesita — no porque el editor los proporcione. Los hace cumplir tu backend.

Ecosistema

Construye tu pila de editores CMS headless

El motor es un peldaño más del montón. A continuación está toda la escalera, con una etiqueta honesta en cada peldaño: qué viene en GrapesJS en sí, qué puedes comprar o descargar en GJS.Market y qué sigue siendo tu propio trabajo.

  1. Núcleo GrapesJSCódigo abierto
  2. Integración de CMSTu trabajo
  3. BloquesGJS.Market
  4. PlantillasGJS.Market
  5. RecursosGJS.Market
  6. AlmacenamientoGJS.Market
  7. FormulariosGJS.Market
  8. SEOGJS.Market
  9. ExportaciónGJS.Market
  10. PublicaciónGJS.Market
  11. Permisos y auditoríaTu trabajo

Dos peldaños están marcados como tu propio trabajo a propósito. La integración de CMS es específica para tu modelo de contenido, y el catálogo no tiene permisos ni plugin de registro de auditoría — un socio de implementación puede construir ambos, pero ningún producto aquí lo hará.

Fichas reales

Plugins que importan para una configuración sin interfaz

Cada anuncio a continuación se ha comprobado con el catálogo en vivo y es publicado y comprable. Los precios se leen en el mercado en el momento de la compilación, así que lo que ves es lo que dice el anuncio hoy.

Por caso de uso

Elige la pila de plugins adecuada

Cinco sets iniciales, extraídos de los mismos anuncios verificados. Ninguno de ellos es un paquete que compras con un solo clic — son las combinaciones que siguen apareciendo para cada tipo de producto.

Los precios provienen del catálogo en vivo en el momento de la compilación. Los listados gratuitos están marcados.

Construir vs ampliar

No construyas todas las funciones de CMS tú mismo

Todas las capacidades de la escalera superior son construibles. La cuestión es cuáles merecen la pena para tu equipo cuando ya existe una extensión mantenida.

Construye todoExtender con plugins
Más desarrolloImplementación más rápida
Más mantenimientoExtensiones reutilizables
Construye todas las característicasAñade solo lo que necesites
Herramientas internasSoluciones listas para usar

Empieza con el editor visual. Añade capacidades a medida que tu producto crezca.

Construir vs adoptar

Construye un editor CMS headless desde cero frente a GrapesJS

No es una comparación con proveedores, sino una comparación de alcance. Cada fila es un subsistema que necesita un editor visual, y la única pregunta es si tu equipo lo escribe.

CapacidadDesde ceroGrapesJS
LienzoConstruirIncluido
Arrastrar y soltarConstruirIncluido
ComponentesConstruirIncluido
BloquesConstruirExtensible
EstiloConstruirIncluido
Edición responsivaConstruirIncluido
CapasConstruirIncluido
RecursosConstruirExtensible
PlantillasConstruirExtensible
AlmacenamientoConstruirExtensible
ExportaciónConstruirExtensible

"Extensible" significa que el subsistema existe y tiene un punto de extensión — el conjunto de bloques, la biblioteca de plantillas, el backend de recursos, el destino de almacenamiento y el formato de exportación son tuyos para suministrar, ya sea desde el catálogo o desde tu propio código. 2026-09-03 verificado por las afirmaciones del catálogo.

Construye tu producto CMS. No reconstruyas el motor del editor visual.

Objeción

¿Por qué no usar simplemente el editor integrado de mi CMS?

A menudo deberías hacerlo. Un editor integrado ya está integrado, ya tiene permisos y es familiar, y para contenido estructurado suele ser la respuesta correcta. Una capa dedicada a la edición visual se gana su lugar cuando necesitas cosas para las que el editor integrado no fue diseñado:

  • Edición visual más rica en la propia página
  • bloques personalizados que coincidan con tu sistema de diseño
  • Configuraciones responsivas comprobadas en cada ancho de dispositivo
  • Componentes personalizados vinculados a tus propios tipos de contenido
  • Integración más profunda con el resto de tu producto
  • una interfaz de marca blanca que tus clientes pueden usar
  • Flujos de trabajo personalizados de revisión y publicación
  • independencia de cualquier frontend concreto

Esto no es una afirmación de que los editores integrados sean inferiores. Es una afirmación de que la superficie de edición y la infraestructura de contenido son decisiones separables.

Quédate con tu CMS. Elige tu propia experiencia de edición.

Implementación

Cómo construir un editor visual CMS headless

  1. 1
    Paso 1

    Define tu modelo de contenido

    Decide qué puede crear el editor y en qué tipos de contenido existentes escribe. Esta decisión limita a todos los que siguen, así que hazlo antes de que se escriba cualquier código del editor.

  2. 2
    Paso 2

    Configurar GrapesJS

    Configura los tipos de componentes, la biblioteca de bloques y los controles de estilo que tienen tus editores — y, igual de importante, los que no tienen.

  3. 3
    Paso 3

    Conectar almacenamiento

    Persiste el documento del proyecto a través de REST, GraphQL o tu propio API, con la autenticación llevada a cabo por la sesión que ya emite tu CMS.

  4. 4
    Paso 4

    Construye la vista previa

    Renderiza el borrador con tu frontend real, en una ruta a la que solo pueda llegar un revisor autenticado. Cualquier otra cosa es una vista previa de otro sitio.

  5. 5
    Paso 5

    Añadir publicación

    Conecta los estados de borrador, revisión y producción con el flujo de trabajo que ya tiene tu CMS, y registra quién aprobó qué en tu aplicación.

Inicio rápido

Empieza a construir

El editor más pequeño que se comunica con un contenido, API. Dos endpoints, una política autosave y las dos llamadas que te dan representación a cada una.

npm install grapesjs
Inicializa el editor contra tu APIjavascript
import grapesjs from 'grapesjs';
import 'grapesjs/dist/css/grapes.min.css';

const editor = grapesjs.init({
  container: '#editor',
  height: '100vh',
  // Load and save the project through your CMS API. Both endpoints are
  // yours: GrapesJS only decides when to call them.
  storageManager: {
    type: 'remote',
    autosave: true,
    stepsBeforeSave: 10,
    options: {
      remote: {
        urlLoad: '/api/cms/pages/home',
        urlStore: '/api/cms/pages/home',
        // Send the session the CMS already issued — never a CMS admin token
        // that reached the browser.
        fetchOptions: (opts) => ({ ...opts, credentials: 'include' }),
      },
    },
  },
});

// The two representations, whenever you need them.
const project = editor.getProjectData();          // re-openable source
const output = { html: editor.getHtml(), css: editor.getCss() };

Envía la sesión que tu CMS ya emitió. Un token de administración del CMS que llega al navegador es un token de administración que tienen tus visitantes.

Transporte

Conecta cualquier API

A GrapesJS no le importa si el otro extremo es REST, GraphQL o algo que haya inventado tu equipo. Un adaptador de almacenamiento es una función de carga y una función de almacenamiento, y todo lo que hay debajo es una elección que tomas dentro de ellos.

  1. GrapesJS
  2. Adaptador de almacenamiento
  3. REST / GraphQL
  4. CMS headless

Lo que el adaptador tiene que cubrir

  • Cargar el proyecto

    Recupera el documento almacenado de una página y entrégalo al editor al inicio.

  • Guardar el proyecto

    Escríbelo de vuelta, idealmente como una actualización de un borrador en lugar de una entrada publicada.

  • Guardado automático

    Ahorra un recuento de cambios o un temporizador, y haz que el endpoint tolere ser llamado con frecuencia.

  • Recursos

    Sube a través de tu canal de medios y devuelve la URL que debería mostrar el gestor de recursos.

  • Vista previa

    Expone el borrador a tu frontend detrás de un token, y a nadie más.

  • Publicar

    Un punto final separado y autorizado. Nunca es la misma llamada que un guardado.

El mismo adaptador, contra GraphQLjavascript
// A storage adapter is just two functions, so GraphQL needs no extra plugin.
editor.Storage.add('cms', {
  async load() {
    const res = await gql(`query Page($id: ID!) { page(id: $id) { project } }`);
    return res.page.project;
  },
  async store(data) {
    await gql(`mutation Save($id: ID!, $project: JSON!) {
      updatePage(id: $id, data: { project: $project }) { id }
    }`, { project: data });
  },
});

No se publica ningún paquete adaptador GraphQL en GJS.Market — el fragmento anterior es toda la integración, por eso no se necesita ninguno.

Dos funciones son todo el contrato entre un editor visual y una API de contenido.

Producción

Editor CMS headless listo para producción

La lista que un equipo recorre entre un prototipo funcional y algo que los clientes tocan. Nada aquí es exótico; todo se omite al menos una vez.

  • Editor

    • Ciclo de vida del editor: inicializar y destruir limpiamente al cambiar la ruta
    • Tipos de componentes personalizados registrados antes de que se cargue cualquier proyecto
    • Solo los plugins que este editor realmente utiliza están empaquetados
  • Datos

    • Persistencia del proyecto probada frente a una API real, no un simulacro
    • Intervalo de guardado automático ajustado y un estado guardado visible
    • Las revisiones se mantuvieron, así que una partida mala se puede recuperar
  • Contenido

    • Validación de esquema en el servidor antes de que se escriba nada
    • Modelo de contenido documentado y versionado con los tipos de componentes
    • Salida estructurada regenerada al publicar, no almacenada en caché desde el editor
  • Seguridad

    • Autenticación API en cada carga, guardado y subida
    • Autorización comprobada en el lado del servidor para la página específica
    • Validación de subida: tipo, tamaño y destino
    • Aislamiento de tenant aplicado en la consulta, no en la interfaz
  • Flujo de trabajo

    • Estado de borrador distinto del estado publicado en el CMS
    • Ruta de vista previa autenticada y excluida de la indexación
    • Paso de revisión grabado con quién y cuándo
    • Publicación de endpoints separados, autorizados y auditables
Seguridad

Consideraciones de seguridad

Un editor visual es una ruta de escritura hacia tu infraestructura de contenido, por lo que hereda todas las reglas que esa ruta ya tenía — y añade subidas de archivos y marcado arbitrario a la superficie.

  • Autorizar en el servidor

    Cada carga, guardado, subido y publicación se comprueba con la sesión, para esa página específica, en el servidor.

  • Aislar los inquilinos en la consulta

    Alcance por tenant en la propia consulta de la base de datos. Un filtro aplicado tras la lectura no es aislamiento.

  • Autenticar la API

    El editor utiliza la sesión que emitió tu CMS. Ningún token de gestión o administrador pertenece al código del navegador.

  • Validar subidas

    Comprueba el tipo, tamaño y destino en el lado del servidor, y sirve el contenido de usuario desde un origen separado donde puedas.

  • Sanea el contenido

    Los editores pueden colocar código personalizado. Decide deliberadamente quién puede hacerlo y limpia lo que se muestra a los visitantes.

  • Proteger la publicación

    Un endpoint separado con su propia comprobación de permisos, así que poder editar no es lo mismo que poder publicar.

Nunca te bases únicamente en permisos del lado del cliente. Ocultar un panel es una decisión de la interfaz de usuario, no un control de seguridad.

Rendimiento

Consideraciones de rendimiento

El runtime del editor es una herramienta de desarrollo y solo pertenece a la ruta de edición. Casi todos los problemas de rendimiento en esta arquitectura provienen de dejar que se filtre en las páginas que cargan los visitantes.

  • Carga el editor de forma diferida

    Importarla en la ruta de edición. Nada en una página orientada al visitante necesita el paquete de edición.

  • Pagina las bibliotecas de recursos grandes

    Una biblioteca multimedia crece sin límite. Paginala y búscala en el lado del servidor en vez de cargarla entera.

  • Incluye solo los plugins que utilices

    Cada plugin registra componentes, comandos y paneles al inicio. Los que no se usan consumen tiempo en cada apertura.

  • Evita el tiempo de ejecución de las páginas publicadas

    La salida publicada debería ser marcado y estilos renderizados por tu frontend, sin que se incluya código de editor.

  • Caché respuestas API deliberadamente

    El API de entrega puede almacenarse en caché completamente; el borrador leído detrás de la vista previa normalmente no puede. Trátalos por separado.

Aquí no se citan tiempos porque no se han medido para esta página. Mide tu propio editor con tu propio conjunto de bloques — la biblioteca de bloques y el número de recursos dominan los números.

FAQ

Preguntas sobre el editor de CMS headless

¿Qué es un editor CMS headless?

Es la interfaz que la gente usa para crear contenido en un CMS headless — la capa que se sitúa sobre el contenido API. En una arquitectura headless, la interfaz de edición no está ligada al frontend, por lo que puede ser el editor basado en formularios propio del CMS, un editor visual que añades, o ambos para diferentes tipos de contenido.

¿Qué es un editor visual CMS headless?

Un editor visual es aquel en el que la persona que edita ve la página mientras la compone: un lienzo, secciones arrastrables, controles de estilo y anchos de dispositivos, en lugar de una lista de campos. Sigue escribiendo a través del contenido API, por lo que el contenido permanece sin pantalla.

¿Puedo usar GrapesJS con un CMS headless?

Sí. GrapesJS persiste a través de un adaptador de almacenamiento — una función de carga y una función de almacenamiento que apuntas a tu API. Cualquier CMS que pueda devolver un documento y aceptar una actualización puede hacer una copia de seguridad.

¿Puedo usar GrapesJS con Strapi?

No hay integración oficial con Strapi ni plugin Strapi en GJS.Market. El enfoque habitual es un campo JSON en un tipo de contenido de página, con el adaptador de almacenamiento del editor llamando a REST o GraphQL API de Strapi usando la sesión del llamante.

¿Puedo usar GrapesJS con Contentful?

No existe una integración oficial. Contentful separa su entrega y gestión APIs, por lo que una integración lee la entrega y escribe a través de la gestión desde tu servidor — nunca con un token de gestión expuesto en el navegador.

¿Puedo usar GrapesJS con Sanity?

No existe una integración oficial. El almacén de documentos de Sanity puede almacenar el documento del proyecto del editor junto con tus campos existentes, con el adaptador leyendo y parchear ese documento a través dla API de Sanity.

¿Puedo usar GrapesJS con Directus?

Directus es la única plataforma con un plugin de almacenamiento comunitario publicado en GJS.Market. Es gratuito y útil como referencia, pero su propia ficha indica que apunta a un SDK de Directus antiguo, así que cuenta con actualizar o reescribir parte de él.

¿Puedo usar GrapesJS con Payload?

No existe una integración oficial. Las colecciones de Payload están definidas en código, por lo que el campo en el que escribe el editor puede declararse en el mismo repositorio que el editor, lo que hace que el adaptador sea inusualmente corto.

¿Puedo conectar un CMS personalizado?

Sí, y a menudo es el caso más sencillo. Si tu backend puede responder a una solicitud de carga y aceptar una solicitud de guardado para un documento, puede respaldar al editor. Nada en el editor asume un producto en particular.

¿Puedo usar REST APIs?

Sí. El almacenamiento remoto integrado toma una URL de carga y una URL de almacenamiento, además de tus opciones de obtención, así que una integración con REST puede ser configuración en lugar de código.

¿Puedo usar GraphQL?

Sí. Registra un adaptador de almacenamiento personalizado cuya carga ejecute una consulta y cuyo almacenamiento ejecute una mutación. No se necesita ningún plugin específico para GraphQL, y ninguno se publica en GJS.Market.

¿Puedo almacenar proyectos GrapesJS como JSON?

Sí — el documento del proyecto es un dato estructurado, y normalmente va una columna o campo JSON. Esa es la representación que hay que mantener si la página se vuelve a abrir en el editor.

¿Puedo generar HTML y CSS?

Sí. El editor expone el marcado renderizado y la hoja de estilos del mismo árbol de componentes, que es lo que consume una iframe de previsualización, una exportación estática o una pipeline de publicación.

¿Debería almacenar HTML o datos de proyectos?

Guarda los datos del proyecto si la página se va a editar de nuevo, porque es la única representación que reconstruye fielmente la sesión. Genera el marcado para renderizar y publicar. Muchas configuraciones de producción mantienen ambas cosas, en campos separados.

¿Puedo crear bloques personalizados?

Sí. Los bloques se registran a través del gestor de bloques, y un bloque puede insertar cualquier tipo de componente que hayas definido — incluyendo uno vinculado a tu propio esquema de contenido.

¿Puedo asignar bloques a mi esquema CMS?

Sí. Define un tipo de componente cuyos traits usan tus nombres de campo CMS, y luego haz que el adaptador lea esos traits en una entrada. Mantener los nombres idénticos en ambos lados es lo que hace que el mapeo sea trivial.

¿Puedo crear un generador visual de landing pages?

Sí, y es el primer caso de uso más común. Una página de campaña es donde los campos estructurados son más débiles y un lienzo es más fuerte.

¿Puedo construir un editor CMS multi-inquilino?

Sí, pero la tenencia es de tu aplicación, no del editor. GrapesJS no tiene concepto de tenant; cada llamada de almacenamiento y activo debe ser alcanzada en el servidor.

¿Puedo crear un creador de páginas SaaS?

Sí. Eso significa añadir cuentas, planes, límites y publicar encima del editor — todo lo cual está en tu producto y no en el motor de edición.

¿Puedo crear un editor de marca blanca?

Sí. Los paneles, iconos, estilo, la biblioteca de bloques y las plantillas son configurables, así que el editor puede ser leído como parte de tu propio producto.

¿Puedo añadir mi propia gestión de recursos?

Sí. El gestor de recursos tiene un gancho de subida, así que puede apuntarse a tu canal de medios o CDN. Existen plugins para los uploaders alojados comunes.

¿Puedo crear flujos de trabajo de borrador y publicación?

Sí, usando los estados que ya tiene tu CMS. Sigue publicando detrás de un endpoint autorizado separado para que poder editar no implique poder publicar.

¿Puedo ampliar el editor con plugins?

Sí. Los plugins añaden componentes, bloques, comandos, paneles y objetivos de almacenamiento. El catálogo de GJS.Market abarca bloques, plantillas, recursos, almacenamiento, formularios, SEO, exportación y publicación; los permisos y el registro de auditoría no están cubiertos y siguen siendo trabajo personalizado.

Servicios

¿Necesitas ayuda para construir tu editor CMS headless?

¿Necesitas ayuda para integrar GrapesJS con Strapi, Contentful, Sanity, Directus, Payload o un CMS propio? Te ayudamos con la integración del editor, componentes personalizados, almacenamiento, plugins y flujos de trabajo de producción.

  • Integración del editor
  • Componentes personalizados
  • Adaptadores de almacenamiento
  • Configuración de plugins
  • Flujos de trabajo de producción
Siguiente paso

Dale a tu CMS headless la experiencia de edición que merece

Mantén tu CMS existente, el modelo de contenido y la arquitectura frontend. Añade GrapesJS como capa de edición visual y luego amplíalo con plugins GJS.Market a medida que tu producto crezca.

Empieza aquí

Construye tu editor CMS headless

Cuéntanos el CMS, el modelo de contenido y las páginas que tu equipo necesita componer, y vuelve a tener una configuración con alcance.

Empezar
Ampliación

Explorar plugins

Almacenamiento, bloques, plantillas, recursos, formularios, SEO, exportación y publicación — los peldaños que no tienes que escribir.

Explorar plugins
Con ayuda

Busca ayuda para implementar

Integración, componentes personalizados, adaptadores de almacenamiento y el flujo de trabajo de producción que los rodea.

Busca ayuda para implementar

Tu CMS. Tu frontend. Tu editor.