Volveroctubre de 2026

Docs Workspace: documentos Markdown colaborativos para equipos

Next.jsTypeScriptTailwind CSSshadcn/uiTipTapYjsClerkSupabase
Docs Workspace: documentos Markdown colaborativos para equipos

Los documentos compartidos por chat o por email se duplican, se pisan y se pierden, y nadie sabe quién cambió qué. Docs Workspace es un espacio de documentos multi-organización: cada equipo crea su organización, invita a personas con un rol y escribe en conjunto en un editor de texto enriquecido.

Varias personas pueden escribir en el mismo documento a la vez y ver los cursores de las demás. Cada documento conserva un historial de versiones inmutable. Lo que cada persona puede ver o hacer depende de su rol, y las reglas se aplican en la base de datos, no solo en la interfaz, así que nadie puede saltárselas llamando a la API directamente.

Por qué importa

Qué hace

Organizaciones, roles e invitaciones

Los tres roles

Editor

Historial de versiones

Cómo funciona la edición colaborativa

La colaboración usa Yjs, una estructura de datos de tipo CRDT que fusiona ediciones simultáneas sin conflictos. Un proveedor propio transporta los cambios sobre Supabase Realtime, y Postgres guarda el registro de cambios para que el documento sea duradero y recuperable.

  1. Cuando alguien escribe, el cambio se transmite al instante por un canal privado del documento (doc:<id>), y solo pueden enviar admins y editores.
  2. Los demás editores lo aplican de inmediato.
  3. Cada editor agrupa sus cambios y los guarda en la base cada pocos segundos, y poco después actualiza la copia en Markdown del documento.
  4. Quien abre el documento carga el registro guardado y luego pide a los editores conectados lo que todavía no se guardó.

Algunos detalles de robustez:

Decisiones de diseño

Clerk administra usuarios, organizaciones, roles, permisos e invitaciones. Supabase guarda documentos, versiones e historial de ediciones. Supabase sabe quién es el usuario y qué organización tiene activa a partir del token de Clerk, de modo que el navegador y el servidor consultan la base con las mismas reglas.

Seguridad

Defensa en profundidad: cada operación sensible se verifica en varios niveles independientes.

Otras protecciones:

Límites por organización

Cada límite se aplica donde corresponde: en un trigger de la base de datos cuando es posible y, para los de Clerk, en el servidor con el ajuste de Clerk como respaldo atómico.

Verificación

Cuatro scripts SQL simulan tokens de Clerk con distintos roles y organizaciones e intentan romper las reglas. Se ejecutan después del esquema, hacen rollback al final y no dejan datos. Cada uno termina con ALL TESTS PASSED, y cualquier fallo indica qué regla se rompió.

En total son 84 comprobaciones automatizadas de base de datos. El código TypeScript es estricto y compila sin errores.

Stack

Alcance y límites conocidos

Lo que demuestra este proyecto