ResolveHQ: un helpdesk que corre entero sobre Cloudflare Workers, D1, R2 y Queues
El proyecto se despliega como un único Worker en tu propia cuenta de Cloudflare y cubre bandeja compartida, correo entrante y saliente, adjuntos y centro de ayuda.
ResolveHQ es un helpdesk self-hosteable pensado para equipos de soporte pequeños, y su gracia está en dónde vive: no hay servidor que mantener, sino un único Cloudflare Worker que se despliega en tu propia cuenta. El código está publicado en GitHub y el autor lo ha presentado con la etiqueta de Show HN, es decir, buscando opinión de otros desarrolladores antes que clientes.
El reparto de piezas es el esperable en este stack. Hono sirve en el mismo Worker tanto la API REST como la aplicación React ya compilada. Cloudflare D1 guarda tickets y clientes, R2 almacena los adjuntos y Queues transporta los trabajos de correo entrante y saliente. Email Routing entrega el correo que llega al Worker y Resend se encarga del que sale, con estado de entrega, reintentos y webhooks idempotentes. Hay colas de mensajes muertos que drenan a registros recuperables, y un cron cada cinco minutos que reintenta envíos atascados y limpia datos huérfanos o de staging.
Funcionalidad y control
La bandeja compartida aísla los clientes por inquilino e incluye asignación, estados, prioridad, etiquetas y búsqueda de texto completo. Los roles son Owner, Admin y Agent, con un selector de espacio de trabajo para quien lleva varias organizaciones. El hilado de correo sigue el RFC 5322 y el autor destaca que resiste el spoofing de la línea de asunto entre tickets. A eso se suman respuestas guardadas, notas internas, un centro de ayuda público construido desde artículos con borradores privados, informes exportables a CSV y automatizaciones por reglas.
La asistencia con IA viene desactivada por defecto. El administrador tiene que habilitarla en Settings y solo entonces las conversaciones del ticket se envían a OpenAI; sin clave configurada, la función ni aparece. Las variables son OPENAI_API_KEY y, opcionalmente, OPENAI_MODEL, cuyo valor por defecto es gpt-4o-mini. Para el cumplimiento, el proyecto permite exportar todo lo almacenado de un cliente como JSON o borrarlo con un flujo reanudable que además cancela el correo que estuviera en cola. TICKET_RETENTION_DAYS (por ejemplo, 365) hace que un barrido programado elimine de forma permanente los tickets resueltos y cerrados más antiguos que esa ventana, adjuntos incluidos.
Lo que cuesta operarlo
Un despliegue pequeño cabe en el plan gratuito de Cloudflare siempre que el uso se mantenga dentro de los límites actuales de Workers, D1, R2, Queues, Cron Triggers y Email Routing. El propio autor avisa de que la autenticación o el parseo de correo intensivos en CPU pueden obligar a pasar a Workers Paid, y recomienda medir antes. R2 exige activar la cuenta y configurar la facturación por separado, y Resend aplica sus propios límites al correo saliente. Las colas sí están disponibles en el plan gratuito.
El atractivo para quien administra sistemas es evidente: cero servidores, cero parcheo de sistema operativo y un modelo de permisos ya resuelto por la plataforma. El reverso es el de siempre en lo edge-native: el despliegue queda atado a un proveedor y a sus precios. La descripción remite a un archivo LICENSE sin detallar los términos, así que conviene mirarlo antes de adoptarlo. Quedan pendientes la interfaz multiidioma y las notificaciones fuera de la aplicación, como los resúmenes por correo.
