Proyectos7 de octubre de 2026desinfeccionescontrol.com
Desinfecciones Mendoza Control - Sitio y panel de consultas para una empresa de control de plagas
Un sitio que diseñé y construí para una empresa de control de plagas y desinfección de Guaymallén, Mendoza. Guía de plagas, páginas por zona, contacto directo por WhatsApp y un panel de administración, con Next.js, Clerk y Drizzle.
Desinfecciones Mendoza Control es un operador habilitado de control de plagas y desinfección, con base en Rodeo de la Cruz, Guaymallén, Mendoza. Tiene dos tipos de clientes: vecinos que buscan desde el celular, muchas veces de noche, y compradores comerciales como restaurantes, hoteles y bodegas. El objetivo era conseguir más trabajo desde la búsqueda orgánica local. El sitio anterior tenía afirmaciones que nadie podía respaldar: testimonios inventados, logos de grandes marcas que no eran clientes, una calificación y una cantidad de reseñas inventadas, y un teléfono equivocado. Las saqué todas. Es un proyecto para cliente: hice el diseño y el desarrollo de punta a punta.
Qué construí
Un sitio público con una guía de 12 plagas, cada una en su "Ficha de la plaga" numerada del I al XII, más 2 páginas de servicio (certificado de desinfección y desinfección de escuelas): 14 páginas de servicio en total. Además, 10 páginas de zona en el Gran Mendoza, páginas de promociones y preguntas frecuentes. Cada ficha cuenta cuánto mide la plaga, dónde vive, cuándo está activa y qué tratamiento corresponde. Los links de WhatsApp llevan un mensaje precargado que nombra la página desde la que llegó la persona. En el celular hay una barra de acciones fija abajo con WhatsApp y Llamar, y una insignia "abierto ahora" calculada con la hora de Mendoza (todos los días de 06:00 a 23:30).Detrás, un panel en protegido con Clerk y un claim de sesión de administrador. Lista y detalle de consultas, promociones con ventana de inicio y fin, estado activo, prioridad y opción de banner, y un tablero con gráficos, un embudo y un calendario de promociones. El contenido está en español.
Decisiones de diseño
"La lámina entomológica": una lámina de especímenes del siglo XIX. La regla es una tinta, un papel, una señal. Bodoni Moda solo para títulos grandes, IBM Plex Sans para el texto e IBM Plex Mono en mayúsculas para las anotaciones. Un único color de señal, bermellón, reservado a las acciones y al estado en vivo. Líneas de 1px en lugar de sombras, radio de 2px. Los especímenes se muestran a tamaño real en milímetros con una regla, junto con una banda de temporada de 12 meses. Las fotos de plagas van sobre blanco, multiplicadas contra el papel; las fotos de stock se imprimen en tinta gris y nunca se presentan como el personal de la empresa. Solo tema claro.
Decisiones de ingeniería
Las afirmaciones que no se pueden respaldar rompen los tests. Con Vitest, unos tests de copy fallan si en el texto aparecen términos prohibidos, afirmaciones sin respaldo o datos de contacto equivocados. Es la forma de que no vuelva el problema del sitio anterior: un testimonio inventado o un teléfono mal copiado no llega a producción. Hay también tests del flujo de estados de las consultas, las reglas de promociones y las estadísticas del tablero, incluido el límite de semana en UTC-3 de Mendoza.Dominio separado del framework. El código de dominio y de casos de uso vive aparte de Next.js, Clerk y Drizzle. Postgres con Drizzle guarda las consultas (con estado y UTM), las promociones, un registro de eventos de cada consulta y los consentimientos.Publicación. Las páginas son ISR con una ventana de 15 minutos, y un endpoint protegido con secreto revalida las promociones al instante apenas se publica una. Si la base de datos no responde, el sitio público cae a dos campañas precargadas en lugar de romperse.SEO. JSON-LD (horarios, geo, zonas atendidas, catálogo de ofertas), , , y para las promociones. A propósito no hay marcado . Sitemap de imágenes, tarjetas Open Graph generadas para inicio, servicios, zonas y promociones, e imágenes AVIF/WebP.Medición y entrega. Eventos de GA4 para toques en WhatsApp, llamadas, formulario y reseñas. La imagen de Docker usa node:20-alpine y corre con un usuario sin privilegios, desplegada en Dokploy.