Lanzar la campaña de primavera
Haz clic en este texto y escribe encima.
PageKit: el creador de sitios GrapesJS autoalojado, con el código fuente incluido. Obtener acceso anticipado
Crea un creador de páginas de aterrizaje visual con arrastrar y soltar con secciones reutilizables, edición responsiva, componentes personalizados, formularios, controles SEO y tu propio flujo de trabajo de publicación.
Bloques
Capas
Estilos
Empieza desde un lienzo en blanco o una plantilla, arrastra secciones a su lugar, personaliza estilos y contenido, y publica desde tu propia aplicación. Arrastra un bloque al lienzo de abajo — o toca un bloque y luego toca el lienzo — para ver el gesto que harán tus usuarios.
Secciones
Arrastra una sección dentro — o toca una sección, y luego toca el lienzo.
Haz clic en este texto y escribe encima.
Corto, escaneable, con el beneficio primero.
Tres niveles, uno recomendado.
Estilos
Acento
Tres builds públicas de GrapesJS, cargadas solo cuando pides una: nada se recupera hasta que haces clic.
Abrir en una pestaña nuevaLa demo de GrapesJS de serie: paleta de bloques, lienzo, gestor de estilos y árbol de capas. Todo lo visible aquí viene en el núcleo de código abierto.
Carga una demo de terceros en un iframe. No se pide nada hasta que haces clic.
Un creador de páginas de aterrizaje parece una sola función y se comporta como una docena. Antes de que un marketer pueda arrastrar una sección hero a su sitio, alguien tiene que haber construido un lienzo, un modelo de componentes, un sistema de arrastrar y soltar, un gestor de estilo, edición responsiva, deshacer, gestión de activos y un formato de serialización — y luego mantener todo funcionando.
Diseña primero la arquitectura del editor, luego lanza el producto.
Implementas y mantienes
Cada uno de esos es un subsistema con sus propios casos límite, y ninguno es lo que tus clientes pagan.
Toma el motor de edición tal y como te lo has dado y personalízalo.
Ya está en el núcleo de código abierto
Configuras los paneles, registras tus propias secciones y gastas tu presupuesto de ingeniería en el producto en su lugar.
Mira el inicio rápidoAñade los textos específicos de marketing sin escribirlos.
Instalado en lugar de construido
Instala, configura, personaliza, envia — y guarda el código de tu equipo para las piezas que nadie más puede montar para ti.
Explorar pluginsGrapesJS te da la base de edición visual para que tu equipo pueda centrarse en el producto que lo rodea.
Diecinueve subsistemas, etiquetados por quién acaba siendo el propietario de cada uno. La cuestión no es que la lista sea larga, sino que solo los últimos cuatro son específicos de tu negocio.
GrapesJS cubre el motor de edición. Los plugins cubren las superficies específicas de la página de inicio. Todo en la última línea es donde tu producto realmente difiere del resto.
Un creador de páginas de aterrizaje es un editor visual que permite a los usuarios crear páginas de campaña sin tener que escribir a mano cada elemento HTML y la regla CSS.
No es una sola función. Un creador de páginas de destino es un editor más bloques, plantillas, formularios, SEO, análisis, experimentos y publicación — y cada uno de esos es una decisión sobre quién posee qué.
En la práctica, se espera que un creador moderno de páginas de aterrizaje ofrezca todo lo siguiente:
Lo que los equipos esperan de uno
El usuario manipula directamente la página renderizada. Un generador de páginas de aterrizaje de arrastrar y soltar convierte el diseño en un gesto en lugar de una solicitud de fusión.
Los profesionales del marketing piensan en héroes, tablas de precios y preguntas frecuentes. Un editor de páginas de destino construido en torno a bloques de sección coincide con la forma en que realmente se planifican las campañas.
La salida es marcado que controlas y puedes renderizar en cualquier lugar — no un formato propietario bloqueado a un entorno de ejecución alojado.
GrapesJS proporciona la capa de edición visual. Tu aplicación controla el backend, los datos, la autenticación y el flujo de trabajo de publicación.
El mismo motor de edición visual respalda productos muy diferentes. Lo que cambia es la aplicación que lo rodea: quién inicia sesión, qué puede hacer y dónde acaba la página.
Lanza páginas de producto y campaña rápidamente, sin necesidad de un ticket de ingeniería por cambio de titular.
Mecánicas de arrastrar y soltarDeja que los clientes creen páginas directamente dentro de tu SaaS, bajo su propia cuenta y su propia marca.
Construyendo un constructor SaaSCrea un sistema de edición reutilizable y aplícalo a varios proyectos de clientes.
Constructores de marca blancaOfrece una experiencia de creación de página completamente marcada donde nada en pantalla diga GrapesJS.
Enfoque de marca blancaDale a los equipos de contenido edición visual sobre el modelo de contenido que ya tienes.
Edición CMS sin cabezaPermite que el equipo de marketing cree páginas sin apoyo de ingeniería, dentro de tus propias herramientas.
Enfoque de código abiertoEnvía e itera páginas de campaña sin antes construir un CMS completo.
La salida HTMLIntegra la creación visual de páginas directamente en otra aplicación que ya usan tus clientes.
Embeber un constructorTu aplicación
Datos del proyecto
GrapesJS
De la creación a la página en vivo
GrapesJS es el propietario de la superficie de edición. Tu aplicación es dueña de la identidad, los datos y la entrega. Mantener esa línea limpia es lo que hace que el constructor sea reemplazable, probable y tuyo.
Estas son las capacidades de edición que ofrece GrapesJS de fábrica, y las que su plugin API está diseñado para ampliar.
Construye los diseños visualmente. Los componentes se retiran, se reordenan y anidan en el propio lienzo.
Registra tus propias secciones y componentes una vez; cada usuario arrastra la misma librería.
Cambia de dispositivo en el editor y escribe las reglas por punto de interrupción. El conjunto de dispositivos por defecto es escritorio, tableta, horizontal móvil y vertical móvil.
Define los tipos de componentes con su propio traits y comportamiento para que el editor coincida con el sistema de diseño de tu producto.
Gestiona imágenes y otros medios a través del gestor de activos, respaldado por el almacenamiento que ya uses.
Controla la tipografía, el espaciado, los colores y la disposición mediante controles agrupados por sectores que puedes configurar.
Inicia campañas desde diseños reutilizables en lugar de un lienzo en blanco, a través de los plugins de plantilla en el catálogo.
getHtml() y getCss() devuelven el marcado que el lienzo renderizado, así que la salida publicada sigue siendo tuya para optimizar.
Elige una plantilla
Abre un diseño guardado en lugar de una página en blanco. La campaña más rápida es aquella que empieza con un 70% de finalización.
Añadir secciones
Arrastra hero, características, precios, testimonios y bloques FAQ en el orden que la campaña necesite.
Personalizar contenido
Edita el texto en el lienzo, cambia imágenes a través del gestor de activos y establece enlaces.
Ajustar estilos responsivos
Cambia de dispositivo y arregla la disposición por punto de interrupción antes de que alguien lo vea en un móvil.
Añadir formularios
Deja el formulario de captura y apúntalo a tu propio punto final.
Vista previa
Renderiza la página desde los datos del proyecto en una ruta de vista previa — el mismo renderizador que funciona a la página en vivo.
Publicar
Escribe el HTML, CSS y el registro SEO, asigna el slug y sírvelo desde tu propia infraestructura.
Crea una vez. Reutiliza entre campañas.
El núcleo de GrapesJS no lleva bloques. Eso no es una omisión — es el punto de extensión. La biblioteca de bloques que registras es exactamente lo que convierte un editor visual genérico en un creador de páginas de aterrizaje diseñado específicamente, y es el código de mayor palanca que escribirás.
Titular, subtítulo y la llamada principal a la acción.
Dos o cuatro columnas de beneficios con iconos.
Logotipos de clientes o de integración como prueba social.
Citas, nombres y avatares cerca del punto de conversión.
Planes escalonados con una columna de recomendaciones.
Tabla de características frente a la alternativa que el visitante está valorando.
Gestión de objeciones, en palabras del propio visitante.
La superficie de captación de leads, publicando en tu API.
Suscribirse a campo único, para el visitante que aún no esté preparado.
La pregunta repetida, al final de la página.
Señales de navegación, legales y de fideicomiso.
Instala el núcleo, móntalo y registra las secciones que lo convierten en un generador de páginas de destino. Todo lo demás en esta página es una decisión superpuesta a estas líneas.
Instalación
npm install grapesjsimport grapesjs from 'grapesjs';
import 'grapesjs/dist/css/grapes.min.css';
const editor = grapesjs.init({
container: '#editor',
height: '100vh',
// The core ships no blocks at all — the section library below is what
// turns a generic visual editor into a *landing page* builder.
blockManager: { appendTo: '#blocks' },
storageManager: false,
});
const SECTIONS = [
{ id: 'hero', label: 'Hero', html: '<section class="hero">…</section>' },
{ id: 'features', label: 'Features', html: '<section class="features">…</section>' },
{ id: 'logos', label: 'Logo cloud', html: '<section class="logos">…</section>' },
{ id: 'pricing', label: 'Pricing', html: '<section class="pricing">…</section>' },
{ id: 'faq', label: 'FAQ', html: '<section class="faq">…</section>' },
{ id: 'cta', label: 'Call to action', html: '<section class="cta">…</section>' },
];
SECTIONS.forEach(({ id, label, html }) => {
editor.Blocks.add(id, { label, category: 'Landing page', content: html });
});Cada bloque es una etiqueta, una categoría y un fragmento de marcado. Si le das al marcado un tipo de componente, también recibe traits, restricciones y su propia barra de herramientas.
Una plantilla es un proyecto guardado que abre un usuario en lugar de un lienzo en blanco. Las categorías que aparecen a continuación son los tipos de diseño que piden los equipos de marketing — los plugins que hay debajo son los que permiten a tus usuarios guardar, gestionar y volver a abrirlos.
Tipos de distribución que los equipos solicitan
Estos son tipos de maquetación, no listados de catálogo: no hay un tipo de producto plantilla en GJS.Market. Los gestores de plantillas y páginas que aparecen a continuación son plugins reales que le dan a tu creador un sitio donde guardarlos.
Una página de destino sin superficie de captura es un folleto. El componente de formulario es una preocupación del editor; todo lo que viene después del botón de enviar es tuyo.
Ruta de envío
Enruta cada envío a través de tu propio endpoint. Ahí es donde pertenecen la validación, la limitación de tasas, el manejo de spam, el consentimiento y el enrutamiento CRM — y ninguno de ellos es algo que debería decidir un editor de páginas.
// The form component is editor-side. The submission is yours.
// Never let the published page post straight to a third party you do not
// control — route it through your own endpoint so you keep the lead.
app.post('/api/leads', async (req, res) => {
const parsed = leadSchema.safeParse(req.body); // validate server-side
if (!parsed.success) return res.status(422).json({ error: 'invalid' });
await rateLimit(req.ip); // forms get abused
const lead = await db.leads.create({
data: { ...parsed.data, pageSlug: req.body.pageSlug, utm: pickUtm(req.body) },
});
await crm.upsertContact(lead); // your CRM, your rules
res.json({ ok: true });
});Nombre, correo electrónico del trabajo, mensaje. La ruta de ventas predeterminada en una página de campaña B2B.
Campo único, baja fricción, para visitantes interesados pero no preparados.
Directamente al producto, con los parámetros de campaña cumplidos.
Tamaño de la empresa, rol, presupuesto: las necesidades de ventas del campo antes de la primera llamada.
Una página de campaña que un profesional del marketing no puede titular, describir o canonizar sin un desarrollador no está terminada. GrapesJS edita el cuerpo del documento; el encabezado pertenece a tu aplicación, así que el registro SEO debe formar parte del modelo de tu página desde el principio.
SEO de páginas
<title>meta[name=description]link[rel=canonical]meta[property^=og:]og:imagemeta[name=robots]application/ld+jsonAlmacenado junto a los datos del proyecto, editado en la misma pantalla, emitido por tu renderizador al publicar.
Trata los metadatos de SEO como un campo de primera en el registro de la página, no como algo añadido tras el lanzamiento. Los profesionales del marketing deberían poder cambiar un título sin abrir una solicitud pull.
// SEO belongs to your application, not to the canvas.
// Keep the marketing metadata beside the project data, so a marketer can
// edit it in the same screen and your renderer can emit it on publish.
type LandingPage = {
slug: string;
project: unknown; // editor.getProjectData()
seo: {
title: string;
description: string;
canonical?: string;
ogImage?: string;
robots?: 'index,follow' | 'noindex,nofollow';
jsonLd?: Record<string, unknown>;
};
};
// On publish, your renderer — not GrapesJS — writes the <head>.
function renderHead(page: LandingPage) {
return [
`<title>${escapeHtml(page.seo.title)}</title>`,
`<meta name="description" content="${escapeHtml(page.seo.description)}">`,
page.seo.canonical && `<link rel="canonical" href="${page.seo.canonical}">`,
page.seo.robots && `<meta name="robots" content="${page.seo.robots}">`,
].filter(Boolean).join('\n');
}Un generador de páginas de destino se vuelve mucho más valioso cuando los equipos pueden iterar en campañas en lugar de tratar las páginas como activos estáticos. Una vez que una página es un dato en lugar de un archivo, una variante es barata: es otra fila de proyecto que apunta al mismo slug.
Construcción
Duplica la página en el editor y cambia una cosa: el titular, la oferta, la longitud del formulario.
Publicar
Ambas variantes publican en el mismo slug, con los pesos que decida tu aplicación.
Medida
Asigna un visitante una vez, continúa la tarea y reporta la tarea junto con tus eventos de conversión.
Mejorar
Promociona al ganador al valor por defecto y comienza la siguiente prueba desde ahí.
La asignación, el ponderado y la importancia son lógica de aplicación. GrapesJS no está involucrado más allá del punto en que se crearon las dos variantes — por eso mismo puede mantenerse fuera de la ruta de servicio.
No hay ningún plugin de pruebas A/B en el catálogo de GJS.Market, y GrapesJS no tiene función de experimentación. Este es un patrón para implementar en tu aplicación, no un producto para instalar — y un generador de páginas es lo que lo hace barato.
// A/B testing is an application concern, not an editor feature.
// A landing page builder makes it cheap because a variant is just
// another project row pointing at the same slug.
const variants = await db.pageVariants.findMany({
where: { slug, status: 'running' },
});
// Assign once, persist the choice, and report it to your analytics.
const variant = pickWeighted(variants, hash(visitorId));
res.setHeader('Set-Cookie', `exp_${slug}=${variant.id}; Path=/; Max-Age=2592000`);
res.setHeader('Vary', 'Cookie'); // or the page will be cached for everyone
return renderPublishedPage(variant);No necesitas construir una plataforma de analítica dentro de tu creador de páginas. Necesitas páginas publicadas para emitir los eventos que tu pila existente ya entiende.
Disparad a las interacciones que importan: envíos de formularios, clics en CTA, profundidad de desplazamiento en páginas largas.
Vincula una propuesta a la página, la variante y la campaña que la produjo.
La línea base cada dos números es una proporción de.
Conserva los valores UTM desde el primer clic hasta el registro CRM.
Envía el contenedor o etiqueta que ya usa tu equipo en lugar de inventar una capa de informes.
Utiliza tu propia infraestructura de analítica. El trabajo del creador es asegurarse de que cada página publicada lleve las etiquetas y parámetros correctos sin que un profesional del marketing tenga que recordarlos.
El editor produce dos cosas: datos de proyecto desde los que los reabres, y HTML más CSS que sirves. Ambos son tuyos, en formatos que puedes leer.
El motor de edición. Autoalojado, con licencia BSD-3-Clause, sin servicio alojado en la ruta.
El JSON en el que se almacenan tus páginas. Legible, difusible y es tuyo para migrar.
Lo que devuelven getHtml() y getCss() — el marcado exacto que mostró el lienzo.
Autenticación, versionado, permisos y el endpoint de publicación. La parte que realmente es tu producto.
Desde donde se sirven las páginas publicadas, según tus propios términos de rendimiento y caché.
Mantén el control de los datos de tu proyecto, HTML/CSS y la infraestructura de publicación. El autoalojamiento no garantiza que la migración sea gratuita — sigues siendo dueño de la integración que escribiste — pero sí significa que nada de lo que construyas está detrás del botón de exportación de otra persona.
Las mismas catorce capacidades, leídas dos veces. A la izquierda, cada fila es un proyecto. A la derecha, la mayoría son configuraciones — y las tres que no lo son están etiquetadas honestamente.
| Capacidad | Desde cero | GrapesJS |
|---|---|---|
| Lienzo | Lo construyes tú | Incluido |
| Arrastrar y soltar | Lo construyes tú | Incluido |
| Componentes | Lo construyes tú | Incluido |
| Bloques | Lo construyes tú | Extensible |
| Estilo | Lo construyes tú | Incluido |
| Edición responsiva | Lo construyes tú | Incluido |
| Activos | Lo construyes tú | Extensible |
| Almacenamiento | Lo construyes tú | Extensible |
| Plantillas | Lo construyes tú | Extensible |
| Arquitectura de plugins | Lo construyes tú | Incluido |
| Formularios | Lo construyes tú | Extensible |
| Controles SEO | Lo construyes tú | Integra con tu stack |
| Pruebas A/B | Lo construyes tú | Integra con tu stack |
| Publicación | Lo construyes tú | Integra con tu stack |
Verificado en comparación con la documentación de GrapesJS y el catálogo GJS.Market en 2026-09-03. "Extensible" significa que hay un API y plugins existentes para él; "Integrar" significa que el editor deliberadamente no lo hace y que tu aplicación debería hacerlo.
Usa GrapesJS para el motor de edición. Usa tu propia aplicación para todo lo específico de tu negocio.
Listados reales del catálogo GJS.Market, agrupados por las cuatro áreas de capacidad desde las que se ensambla un creador de páginas de aterrizaje. Los precios y la disponibilidad se leen del catálogo en el momento de la compilación.
Bloques, secciones y plantillas — qué arrastran tus usuarios y desde qué parten.
Navegar categoríaUn conjunto de bloques de partida para construir tu biblioteca de secciones de páginas de destino encima.
Secciones preconstruidas de Tailwind — héroes, características, precios — para equipos que ya están en Tailwind.
Una sección de cabecera configurable, con la que empieza el bloque de cada página de campaña.
Una sección de pie configurable con señales de navegación, legal y de fideicomiso.
Te da a tu creador un sitio donde guardar, listar y reabrir plantillas de campaña.
Proyectos de varias páginas, para campañas que necesitan más de una URL.
Captura, localizabilidad y medición: las partes que hacen que una página sea una campaña en lugar de un documento.
Navegar categoríaLos componentes de formulario editables que los usuarios pueden dejar en una página y señalar tu endpoint.
Accesibilidad en el editor y auditoría SEO, así que los problemas surgen antes de publicar.
Conecta Google Analytics a las páginas integradas en el editor.
Un componente de cuenta atrás para ofertas, lanzamientos y seminarios web con límites de tiempo.
Movimiento, tipografía y los componentes que hacen que una página parezca tu marca en lugar de un tema predeterminado.
Navegar categoríaCaruseles para testimonios, nubes de logotipos y galerías de capturas de pantalla.
Escritura animada para titulares de hero, sin JavaScript manuscrito en el lienzo.
Facilitar los controles en el gestor de estilo, para transiciones que se sienten diseñadas.
Tipografía de marca en el editor, así que lo que un marketer ve es lo que se envía.
Dónde se encuentra el proyecto, cómo entran los recursos y cómo la página sale del editor.
Navegar categoríaListado y gestión de proyectos — la capa sobre una única sesión de edición.
Se publica directamente en Netlify, para equipos que quieren un objetivo de hosting desde el primer día.
Exporta la página como un archivo descargable de HTML, CSS y los recursos.
Respalda al gestor de activos con Cloudinary en lugar de cargas locales.
Tres listas de la compra, enmarcadas por lo que estás construyendo en lugar de por categoría de catálogo.
Para un equipo de marketing que publica sus propias páginas
Mecánicas de arrastrar y soltarPara un equipo de producto, la creación de páginas como una característica
Para una agencia que reutiliza un sistema entre cuentas
Los precios se leen del catálogo en el momento de la compilación y pueden haber cambiado: la página del producto es autorizada.
GrapesJS proporciona la base de edición visual. Los plugins de GJS.Market te permiten añadir capacidades especializadas sin tener que construir cada función tú mismo.
Cada capacidad se convierte en un ticket, una revisión y un compromiso de mantenimiento.
Cuatro pasos, repetidos por capacidad, sobre un motor que no escribiste.
Poner un creador de páginas dentro de un producto no es mayormente un problema de editor. El editor es una vía; el resto es la maquinaria multiinquilino que lo rodea.
Dónde encaja el editor
Quién puede abrir el editor y a quién ve las páginas cuando lo hace.
La unidad a la que pertenece una página. Normalmente la misma unidad que facturas.
Editar, publicar y eliminar son tres derechos diferentes. La publicación es la que merece la pena proteger.
Número de páginas, número de asientos o volumen de publicación — todo lo cual el editor está encantado de no saberlo.
Tu Chrome, tus fuentes, tus iconos. El editor UI es configuración, no una interfaz fija.
Slugs, dominios personalizados, versiones y rollbacks, servidos desde tu infraestructura.
El editor es una sola pantalla en tu producto. La tenancia, los permisos y la facturación son lo que lo convierte en una función que puedes vender.
El problema de una agencia no es construir un solo creador de páginas. No es reconstruir lo mismo para el undécimo cliente.
O del cliente. El editor Chrome, los iconos y la tipografía son tuyos para configurar por inquilino.
Una biblioteca de secciones, mantenida una vez, desplegada en cada cuenta.
Proyectos aislados bajo una sola instalación, con activos y plantillas por cliente.
Lanza un cliente nuevo con los diseños que funcionaron para el anterior.
Deja que un cliente edite el texto sin que reestructuren la página o publiquen sin revisar.
Despliega en el dominio y alojamiento del cliente, sin que la agencia se convierta en una empresa de alojamiento.
Crea un sistema de edición y reutilízalo en varios proyectos del cliente. Los bloques y plantillas se convierten en el activo de la agencia; el cliente solo ve su propia marca.
El núcleo GrapesJS se publica bajo la licencia BSD-3-Clause y el envoltorio oficial de React bajo MIT. Ambos permiten el uso comercial. Las consecuencias prácticas:
El editor se ejecuta dentro de tu aplicación. No hay ningún servicio de editor alojado entre tú y tus usuarios.
Los paneles, comandos y tipos de componentes son todos reemplazables, no solo temizables.
Los datos del proyecto permanecen en tu base de datos, en un formato que puedes leer y migrar.
Construye la interfaz del editor que necesiten tus usuarios en lugar de la que lanza un proveedor.
Tu CRM, tu almacenamiento de activos, tu destino de despliegue — conectados por cable a través del plugin API.
Una arquitectura de plugins documentada y un catálogo existente para apoyarse.
Nada de lo que construyas depende de que un editor alojado siga existiendo en sus términos actuales.
Un constructor de páginas tiene dos presupuestos de rendimiento muy diferentes, y confundirlos es el error más común en esta arquitectura.
Importala dinámicamente para que nunca acabe en un paquete compartido.
Una instancia del editor, en la ruta de autoría, se montaba en el lado del cliente.
El editor posee su propio DOM. Volver a renderizar el envoltorio en cada pulsación de tecla lo pone en problemas.
Paginar y cargar perezosamente el gestor de activos en vez de listar cada subida.
Carga un plugin cuando se abra el panel que lo necesita, no en la entrada del editor.
Dos puntos de entrada, dos presupuestos. La página publicada no debería importar al editor en absoluto.
Imágenes, fuentes y CSS crítico en la salida, ajustados como cualquier otra página de producción.
// The editor is an authoring environment. Keep it out of the bundle
// that a visitor downloads to read a published landing page.
// /admin/editor — loaded only for authenticated authors.
const PageBuilder = dynamic(() => import('@/components/page-builder'), {
ssr: false, // GrapesJS measures the DOM on init
loading: () => <EditorSkeleton />,
});
// Heavy, optional plugins load when the panel that needs them opens.
async function openAssetManager(editor) {
const { default: cloudinary } = await import('grapesjs-cloudinary');
cloudinary(editor, { cloudName: process.env.NEXT_PUBLIC_CLOUDINARY });
editor.runCommand('open-assets');
}El editor es un entorno de autoría. Las páginas de destino publicadas no necesitan necesariamente todo el tiempo de ejecución del editor — y una página de campaña que envíe un paquete de editor a cada visitante ha descartado la razón para crear una.
Un generador visual acepta entradas estructuradas de un navegador y las convierte en un marcado que sirves. Cada elemento que aparece a continuación se deduce de esa única frase.
Los endpoints de cargar, guardar y publicar son privilegiados. Trátalos así.
Poder editar una página no es lo mismo que poder publicarla.
Comprueba el tipo, tamaño y contenido del lado del servidor, y muestra las subidas de usuario desde un origen que estés dispuesto a aislar.
Cuando no se confíe plenamente en los autores de páginas, desinfecta tanto al salir como al entrar.
Que el proyecto JSON llegue a tu API es una entrada no confiable. Analiza, no simplemente la almacenes.
La publicación cambia lo que ve el público. Limita la tarifa, regístrala y hazla revertible.
Todo lo que envíe el editor puede ser falsificado. Vuelve a obtener la propiedad y los límites del servidor.
Esto es una lista de comprobación inicial, no una garantía. Modela tu propio despliegue de amenazas — especialmente si las personas que editan las páginas no son las propietarias del dominio.
Tres etapas, cada una enviable. El error es intentar llegar a la tercera antes de que alguien haya publicado una página de la primera.
Una persona puede crear y publicar una página.
Un equipo puede confiar en ello sin que tú estés en la sala.
El constructor se convierte en algo que puedes vender.
Cada etapa después de la primera es una decisión de producto, no de editora — por eso mismo el editor no debería ser lo que aún estás construyendo.
Empieza con el motor de edición visual GrapesJS, personalízalo para tu producto y añade las capacidades que necesitas con los plugins GJS.Market.
Instala el núcleo, registra tu primera biblioteca de secciones y haz que una página se renderice a partir de los datos del proyecto.
EmpiezaAñade bloques, plantillas, formularios, auditoría SEO y objetivos de publicación sin escribirlos tú mismo.
Explorar pluginsDinos qué tiene que hacer el constructor y nosotros definiremos el alcance del editor, la pila de plugins y la integración.
Crea tu creador de páginas de destinoConstruye el editor que tu producto necesita — en lugar de reconstruir el motor de edición desde cero.