Caso de estudio · 2026

expression.

Editor editorial colaborativo

expression lleva la maquetación editorial profesional al navegador y le suma lo que a las herramientas de escritorio les falta: trabajo en equipo real. Cada "nodo" de un pliego se reparte a su responsable, que edita solo lo suyo sin tocar el resto; el flujo va de borrador a publicado con briefings, deadlines e historial siempre a la vista.

expression

El problema

La maquetación de revistas vive en software de escritorio (InDesign, Affinity) pensado para un único diseñador. Pero el trabajo de una redacción es coral: editores, redactores y diseñadores tocan partes distintas del mismo pliego, con deadlines y un flujo de aprobación. Ninguna herramienta cubre ese cruce.

El hueco de mercado

Las herramientas de escritorio (InDesign, Affinity) son mono-usuario; las colaborativas (Docs, Figma) no son editoriales. Hoy no existe una herramienta enfocada en lo editorial que permita un trabajo a la vez tan granular y tan colaborativo. expression ocupa exactamente ese cruce.

La solución

expression es un editor editorial colaborativo de pliegos que corre en el navegador. Maquetación profesional —páginas maestras, columnas, línea base, estilos de párrafo y de carácter, texto enriquecido e imágenes— con un flujo de redacción encima: briefings, deadlines, estados editoriales y compartir por nodos. En tiempo real y sin instalar nada.

Plataforma
Web (navegador)
Framework
Next.js 16 · React 19
Estado
Zustand · zundo
Texto
TipTap / ProseMirror
Backend
Supabase
El editor de expression con un artículo maquetado
El editor: guías de columnas y línea base, frames de texto e imagen, isla de herramientas e inspector.

Todo lo que incluye

  • Maquetación por pliegos con páginas maestras multipágina
  • Columnas con medianil y rejilla de línea base (6pt)
  • Texto enriquecido (TipTap / ProseMirror)
  • Estilos de párrafo y de carácter reutilizables
  • Efectos de capa: blur, ruido, modos de fusión
  • Multi-selección, grupos y smart guides con imantado
  • Compartir por nodo con permisos (ver / comentar / editar)
  • Flujo editorial con estados que bloquean la edición
  • Briefings por asignación y deadlines siempre visibles
  • Checkpoints e historial (undo/redo)
  • Export PDF vectorial fiel al editor
  • Login sin contraseña y vista de nodo en móvil

El diferenciador: compartir nodos airtight

Cuando compartes el enlace a un solo grupo del pliego, el invitado no recibe el resto del documento — ni siquiera por la red. La frontera de seguridad no vive en la UI sino en la base de datos: funciones SECURITY DEFINER validadas por token proyectan solo ese nodo en lectura y fusionan solo ese nodo de vuelta en escritura.

El resto nunca sale del servidor

Filtrar en el cliente no basta: el documento completo viajaría igual. Por eso la proyección y el merge scoped viven en Postgres — cada colaborador edita su nodo y nada más.

Vista del invitado a un nodo compartido
Vista del invitado: solo su nodo viaja; el resto del pliego no existe del lado del cliente.
Vista de nodo en móvil
La vista de nodo también funciona en móvil: una columna, con corte exacto del texto sobrante.

Permisos como experiencia

Antes de compartir, el dueño simula el rol (editar / ver / comentar) y puede "aislar" un grupo: un spotlight oscurece y desenfoca el resto del lienzo para ver exactamente lo que verá el colaborador. Los permisos se sienten, no solo se configuran.

Ultrafoco: aislar un grupo con spotlight
Aislar grupo (ultrafoco): el resto del lienzo se oscurece y desenfoca; "viendo como" el colaborador.

El flujo de una redacción

Cada grupo es una asignación con su briefing —ángulo, responsable, temas, ideas y deadline— editable en el inspector. Los estados editoriales (Borrador → Revisión → Corrección/Aprobado → Publicado) bloquean la edición cuando toca, y un temporizador de deadline siempre visible cambia de color según la urgencia.

Briefing del nodo en el inspector
Briefing del nodo en el inspector: ángulo, responsable, temas, ideas y fecha límite.

Geometría editorial, no píxeles

Un pliego no se mide en píxeles sino en pulgadas y puntos (línea base de 6pt, estándar de 72pt por pulgada). expression construye un modelo geométrico propio —área de contenido, columnas con medianil, rejilla de línea base— y deriva de él los puntos de imantado: mover una caja pega a columnas, a la línea base y al punto medio entre líneas.

800%
de zoom con geometría exacta
en pulgadas y puntos, no en píxeles

Export PDF vectorial

El PDF no es una captura: es vectorial e idéntico al lienzo. Una ruta de servidor lanza Chromium headless sobre la propia página de impresión —reenviando las cookies de sesión— y espera a que fuentes e imágenes estén listas antes de generar el archivo. El mismo código corre en local (Chrome del sistema) y en Vercel (@sparticuz/chromium).

PDF exportado de un número real
PDF real: texto justificado, guiones automáticos y folio — fiel al editor.

Una marca que se dibuja sola

La identidad de expression es un único trazo continuo que fluye como una tubería con color y morfa entre figuras del dominio editorial —texto, página, pluma, lápiz, cursor. Cada figura se resuelve con splines propios y sus límites matemáticos: un mini-reto de geometría aparte.

Showcase de la marca generativa
Showcase de la marca: el repertorio de figuras del trazo único en movimiento.

El stack

Next.js 16 (App Router) y React 19. Estado con Zustand + zundo (undo/redo) y persistencia; texto rico sobre TipTap/ProseMirror. Backend Supabase: Postgres con migraciones versionadas, Auth (magic link), Storage y RPC SECURITY DEFINER para compartir. PDF con Puppeteer + @sparticuz/chromium. Todo el documento es JSON puro, lo que dejó construir el editor local-first y conectar el backend al final sin reescribirlo.

Framework
Next.js 16
Estado
Zustand + zundo
Backend
Supabase · RPC
PDF
Puppeteer + Chromium
Deploy
Vercel

Cómo se construyó

  1. Modelo y editor de canvas

    Documento como JSON puro + frames con drag/resize y snapping a columnas y línea base.

  2. Tipografía InDesign

    Páginas maestras, estilos de párrafo y carácter, texto enriquecido con TipTap.

  3. Grupos y permisos como experiencia

    Multi-selección, grupos, simulación de rol y aislar nodo con spotlight.

  4. Flujo editorial

    Estados que bloquean la edición, briefings por grupo y deadlines siempre visibles.

  5. Backend Supabase

    Auth, persistencia cloud, Storage de imágenes y enlaces de compartir por token.

  6. Compartir nodos airtight ⭐

    Proyección y merge scoped en la base de datos: el invitado nunca recibe el resto del documento.

  7. Export PDF y marca generativa

    PDF vectorial con Chromium headless y la identidad de trazo único.

Resultado

expression nació como la herramienta interna de la propia revista del autor y, tras validarse en producción real, se abre ahora a la comunidad como SaaS —gratuito por ahora. No es una demo: es una herramienta en uso, con el flujo de una redacción real por dentro.

Estado
En producción
Origen
Dogfooding → SaaS
Precio
Gratis (por ahora)
Dominio
expression.ululando.com

¿Construimos algo juntos?