← volver
beta NodeWebSocketsCloudflareDurable ObjectsPWA

Clippy

Portapapeles compartido entre dispositivos — tiempo real, sin instalar nada

// contexto

Un portapapeles que vive en la nube y sincroniza entre dispositivos en tiempo real. Se emparejan con un código efímero, se abre en el navegador y el contenido viaja por un canal persistente: sin cuentas, sin instalar clientes.

// problema

Cambiar de dispositivo rompe el flujo. AirDrop, mail-to-self y apps de notas son fricción disfrazada de solución.

// solución

Sesiones efímeras identificadas por un código de emparejamiento y un canal WebSocket persistente. Copias en un dispositivo, aparece en el otro, y la sesión se destruye sola.

// arquitectura
  1. 01 Un Durable Object por código de sesión (ClippyCoordinator), con hibernación
  2. 02 Express + ws como runtime alternativo para self-host, con el mismo protocolo
  3. 03 Sesiones efímeras por código, con TTL configurable y limpieza periódica
  4. 04 Hasta 5 dispositivos por sesión, con resume token para reconexión
  5. 05 Rate limiting por IP con ventana deslizante y límites de tamaño (10 KB texto / 5 MB imagen)
  6. 06 Frontend PWA con service worker, desplegado en Cloudflare Pages
// decisiones técnicas

UX invisible es la UX

Una herramienta que necesita interfaz para usarse, fracasó. Clippy gana cuando el usuario la olvida.

Tiempo real > consulta periódica

Consultar cada cierto tiempo rompe la ilusión de continuidad. Canal WebSocket persistente con reconexión.

Efímero por defecto

El contenido copiado nunca se guarda y los metadatos de la sesión se borran al vencer el TTL. Menos superficie de datos es menos superficie de riesgo: no hay historial que filtrar.

// aprendizajes
  • El mejor producto de productividad es invisible
  • El tiempo real no es una funcionalidad, es una expectativa
  • Un código de emparejamiento + PWA evita instalar software en cada dispositivo
Ver demo ↗ Código ↗ Contactar →