Blog

Artículos

Artículos largos de nuestro equipo. Ingeniería, producto y novedades de la empresa.

  • Product

    Un centro de ayuda multilingüe sin páginas vacías

    El portal de Kookee mostraba todas las páginas en el idioma predeterminado del proyecto, eligiera el lector el idioma que eligiera. Ahora cada idioma tiene su propia dirección, si falta una traducción se muestra el idioma predeterminado y el selector de idioma ofrece solo los idiomas del proyecto.

  • Product

    Cómo añadir una página de estado a tu SaaS

    Las decisiones detrás de la página de estado de un SaaS: qué incluir, cuándo un monitor de disponibilidad debe declarar una caída, cómo redactar las actualizaciones de un incidente y dónde alojar la página, con la página de estado y los monitores de disponibilidad que acabo de añadir a Kookee como ejemplo práctico.

  • Product

    Tus webhooks no deberían confiar en la URL que reciben

    Un webhook es la única función en la que un cliente escribe una dirección y tus servidores van y la llaman. Lo que construí para los webhooks de Kookee y sus integraciones con Slack, GitHub y Jira, y ocho cosas que un emisor de webhooks tiene que hacer bien.

  • Product

    Tu centro de ayuda no debería empezar desde una página en blanco

    La mayoría de los equipos ya tienen su contenido de ayuda en PDF, archivos de Word y exportaciones antiguas. Volver a escribirlo es la razón por la que los centros de ayuda se quedan vacíos. Lo que construí para importarlo y las siete reglas que evitan que una importación le pase secretos a un chatbot.

  • oauth

    Tu servidor MCP no debería obligar a pegar un token

    El servidor MCP de Kookee funcionaba bien con tokens personales, siempre que vivieras en la terminal. Las apps de chat de Claude y ChatGPT se conectan iniciando sesión. Lo que lancé para que puedan hacerlo y las siete decisiones que llevaron más tiempo que el código.

  • Product

    Tu widget de comentarios no debería exigir registro

    El tablero de comentarios de Kookee pide una cuenta, y para votar eso tiene sentido. Para el visitante que acaba de toparse con un error y tiene medio minuto, es un muro. La nueva pestaña Comentarios del widget del sitio, las cinco reglas con las que la construí y por qué el chat con IA ahora también es opcional.

  • headless-cms

    Los componentes React de tu CMS no deberían obtener sus propios datos

    La mayoría de los kits de componentes de un CMS headless envuelven tu app en un provider y piden los datos dentro de los componentes. Con Server Components, eso deja el contenido fuera del primer HTML, envía JavaScript para listas estáticas y manda los artículos dos veces. Las seis reglas con las que construí los míos.

  • Engineering

    React 19 reescribe tu dangerouslySetInnerHTML en cada render

    Un objeto { __html } escrito en línea hace que React 19 reemplace todo el HTML de un elemento cada vez que su padre se vuelve a renderizar. Lo encontré por un índice atascado en el último encabezado. Por qué pasa, qué rompe y cómo se arregla con una línea.

  • pagination

    La paginación de tu blog seguramente le esconde artículos a Google

    Botones de «Cargar más», paginación guardada en el estado, todas las páginas con la canonical en la primera, noindex en la página dos: cuatro formas habituales en que la paginación de un blog oculta los artículos antiguos a los buscadores, qué hacer en su lugar y una lista de comprobación.

  • security

    Tu enlace de invitación es una contraseña que pegaste en Slack

    Si le mandas a alguien un enlace de invitación, entregas una credencial que funciona para cualquiera que llegue a verla. Esto es lo que ese enlace tiene que llevar antes de que sea seguro pegarlo en un canal, y qué decidí al construir el de Kookee.