KamoCRM

Este sitio web

Una compilación que se niega a enviar una página que sabe que está mal

Este sitio es una aplicación Next.js en veintidós idiomas cuya construcción falla — no advierte — cuando falta una página en el mapa del sitio, una clave de traducción no se resuelve, un enlace interno causaría una carga completa de la página, una animación de entrada es lo suficientemente lenta como para leerse como un puesto de venta, o un precio cotizado no se puede verificar con el catálogo en vivo.

Cada número aquí nombra de dónde vino y cuándo fue medido.
MedidaValorFuenteMedido
Automated guards that fail the build17scripts/check-*.ts and scripts/check-*.mjs in the marketing site repository
Translation key literals verified against the dictionary at build time1,557 across 470 filesnpm run guard:i18n output
Files checked for locale-aware navigation and animation budget294npm run guard:navigation output
Languages served22messages/*.json in the marketing site repository
Maximum permitted entrance animation duration0.3s, with per-item delay capped at 0.15sscripts/check-client-navigation.mjs
Programmatic content pages generated from typed data132 (37 industries, 45 integrations, 9 comparisons, 41 glossary terms)app/lib collection directories

Qué edificio nos enseñó

Todas las agencias dicen que sus sitios son rápidos y bien construidos. La afirmación es infalsificable en el punto de venta, por lo que se hace tan libremente. Preferiríamos ser verificables: abrir las herramientas de desarrollo, ejecutar una auditoría, leer el mapa del sitio, cambiar el idioma, inspeccionar los datos estructurados.

Lo que hace que se mantenga bueno no es el cuidado, sino la aplicación. El cuidado degrada; la sexta persona que toca una base de código no conoce las reglas y ninguna cantidad de documentación lo arregla. Así que las reglas son ejecutables. Diecisiete scripts de guardia se ejecutan antes de que se construya la imagen del contenedor, y un error detiene el despliegue. Un guardia recorre las carpetas de ruta y falla si existe una página que no se lista en el mapa del sitio, por lo que una página no se puede lanzar silenciosamente y nunca se envía a un motor de búsqueda. Otro busca enlaces internos que no sean sensibles a la configuración regional, porque uno de ellos en un pie de página compartido estaba causando una recarga completa del documento en cada página del sitio.

El protector de rendimiento es el que más vale la pena robar. Las páginas aquí anteriormente enviaban docenas de elementos con opacidad cero y los atenuaban al montar, con el retraso multiplicado por el índice, por lo que la décima carta en una lista terminaba llegando más de un segundo y medio después del clic. La red nunca fue el problema; la animación estaba decidiendo cuándo la página parecía lista. El protector ahora limita la duración de entrada y el retraso por elemento, y exime los bucles genuinamente ambientales.

Una página cuya copia no ha sido traducida a un idioma se muestra en inglés con el prefijo de ese idioma, apunta su etiqueta canónica al original en inglés y se oculta deliberadamente del mapa del sitio de ese idioma, porque si se envía, se archiva en la consola de búsqueda como un duplicado que no puede ser indexado. La regla se calcula a partir del propio diccionario: un idioma cuenta como traducido para una sección solo cuando lleva al menos el noventa por ciento de las cadenas de esa sección y menos del treinta por ciento de ellas son byte-idénticas al inglés, que es cómo detectamos un proveedor de traducción silenciosamente haciendo eco de la fuente.

Construido con

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • next-intl
  • Content Security Policy
  • Trusted Types

Para lo que esto nos califica

Marketing site design and buildThe site your business is judged by, built like softwarePerformance engineeringCore Web Vitals on real devices, held by a budgetAccessibility engineeringWCAG conformance tested with a keyboard, not just a scannerTechnical SEOMaking a site legible to search engines, at the source

Cuéntanos lo que estás tratando de hacer

Una breve conversación suele ser suficiente para saber si somos las personas adecuadas, si no lo somos, lo diremos y le indicaremos un lugar mejor.

Iniciar una conversaciónYa uso KamoCRMCómo cotizamos