Una institución financiera nacional necesitaba que sus clientes encontraran la sucursal, el cajero o el agente más cercano con datos siempre correctos, y que su equipo pudiera mantenerlos sin depender de terceros ni abrir una puerta a riesgos de seguridad. Andes Development construyó una plataforma multi-tenant que administra miles de ubicaciones y las publica como mapas públicos indexables, mapas embebibles y una API REST, con un panel protegido por doble factor obligatorio, firewall por IP y auditoría completa.
// El desafío
Una red física grande cambia todos los días, y cada cambio tiene que llegar a todos los lugares donde el cliente la busca. Para un banco, además, cada pantalla que publica datos es una superficie que su equipo de seguridad va a revisar. Los retos clave fueron:
- Miles de puntos, un solo dato correcto Sucursales, cajeros dentro de sucursales, horarios, horarios especiales y servicios cambian todo el tiempo, y un dato viejo manda al cliente a una puerta cerrada.
- Un mapa, muchos destinos La misma información debía vivir en una página pública, dentro del sitio y la app del banco, y en otros sistemas vía API.
- Un mapa que nunca quede en blanco El banco quería usar Google Maps, pero sin que una llave vencida o una caída del proveedor dejara a sus clientes sin mapa.
- Seguridad que resista la revisión del banco Acceso al panel, cargas de archivos, exportaciones y llaves de API tenían que cumplir lo que pide el área de seguridad de una institución supervisada.
- Medir sin rastrear El banco quería saber qué buscan sus clientes sin cookies ni datos personales.
// La solución tecnológica
Andes Development construyó una sola fuente de verdad con varias superficies de publicación, cada una con su propia capa de seguridad:
- Stack moderno Laravel 13, Filament 5, Livewire 4, MapLibre GL y Sanctum para la API, con un centro de ayuda en VitePress.
- Cinco superficies, una fuente Panel de administración, mapa público indexable, mapa embebible, API REST documentada y centro de ayuda, todos alimentados por los mismos datos.
- Ubicaciones jerárquicas y filtrables Un cajero puede vivir dentro de una sucursal; cada espacio de trabajo define sus filtros, teléfonos, enlaces, horarios especiales, galerías y publicaciones de novedades al estilo de Google Business Profile, con importación y exportación de Excel en ambos sentidos.
- Motor de mapas por espacio de trabajo El banco usa Google Maps con su propia llave cifrada. Si el proveedor falla o no dibuja en 8 segundos, el visitante pasa al mapa base propio, generado a partir de datos abiertos y alojado por la plataforma, y la falla queda registrada en el panel. Solo se descarga el código del motor en uso.
- Acceso al panel blindado Doble factor obligatorio para todos, passkeys, dominios de correo permitidos, un firewall por IP y rangos de red que bloquea y registra los intentos externos, y ningún campo de contraseña: cada usuario define la suya desde un enlace de un solo uso enviado por correo. Los administradores de la plataforma solo se otorgan desde la terminal del servidor.
- Autorización estricta Una política de acceso obligatoria para cada modelo, incluidos los registros hijos; cada acción personalizada verifica sus propios permisos y un miembro solo puede otorgar los roles que ya tiene.
- Superficies públicas sin estado El mapa y las páginas públicas no abren sesión ni guardan cookies. La API y los mapas embebibles aplican su propia política de seguridad de contenido (CSP), y los embebidos solo cargan con un token firmado en dominios autorizados. Las llaves de API tienen alcance, lista de IPs y dominios, y su documentación se abre con un enlace firmado que vence a los 7 días.
- Datos que no se convierten en ataque Solo se aceptan imágenes rasterizadas, los íconos SVG pasan por un sanitizador con lista de elementos permitidos y las exportaciones se generan en cola, se entregan por enlace firmado y vienen protegidas contra inyección de fórmulas en hojas de cálculo.
- Auditoría y monitoreo Bitácora con línea de tiempo en cada modelo de negocio, configuración y acceso. Los errores van a Sentry y el rendimiento a Nightwatch, ambos sin datos personales, con monitoreo de disponibilidad cada 5 minutos y alertas si la actualización nocturna no corre.
- Disciplina de código 449 pruebas automatizadas, análisis estático con Larastan nivel 5 y revisiones locales con Semgrep, gitleaks y auditoría de dependencias antes de cada envío; cualquier excepción de dependencia debe tener fecha de vencimiento y quedar documentada.
- Accesible y bilingüe Búsqueda tipo combobox, diálogos con foco controlado, contraste WCAG AA y respeto a la preferencia de movimiento reducido. El panel, los correos y el centro de ayuda funcionan en español e inglés según cada usuario.
- Analítica sin cookies y SEO local Geolocalización aproximada sin conservar la IP, resúmenes por hora y por día en un tablero de nueve indicadores, datos estructurados de negocio local por ubicación, sitemap y llms.txt.
// Resultados y logros destacados
Antes de ampliar el uso de la plataforma, Andes Development hizo una auditoría interna de todo el código que terminó en 10 entregas de corrección, y el equipo de seguridad del cliente escaneó el servidor de producción:
-
0 hallazgos
De aplicación en el escaneo externo del equipo de seguridad del cliente; los hallazgos de infraestructura del servidor se atendieron o están en curso. -
449 pruebas
Automatizadas que verifican, entre otras cosas, que ningún espacio de trabajo vea los datos de otro. -
2.1 MB menos
De HTML en las páginas del mapa, junto con listas por ventanas que eliminaron unos 12 segundos de lecturas por cada 200 consultas en mapas grandes.
El mapa base de un país completo se genera en unos 8 segundos en el servidor de producción, extrayendo solo esa región del archivo planetario de unos 135 GB sin descargarlo. Una precisión honesta: la política de seguridad de contenido del panel y del mapa público corre todavía en modo de monitoreo, que reporta las violaciones sin bloquearlas; en la API y los embebidos ya se aplica.
// Conclusión
El banco tiene hoy una sola fuente de verdad para su red física, publicada donde sus clientes la buscan y medida sin rastrear a nadie. Su equipo actualiza horarios y ubicaciones sin tocar código, el mapa sigue funcionando aunque falle el proveedor y cada acceso al panel pasa por doble factor, firewall y bitácora. La plataforma está lista para sumar nuevos países y nuevos clientes sobre la misma base.