← Back to posts
Automatización ETL en el cliente con D-MO (Data Micro-Optimizer)
DataNext.jsETL

Automatización ETL en el cliente con D-MO (Data Micro-Optimizer)

Omargpax · 26 de junio de 2026

Cómo diseñé una herramienta web con Next.js y TypeScript para normalizar, validar y transformar datos financieros complejos localmente en el navegador, garantizando privacidad absoluta.


En el día a día del desarrollo de software y el análisis de datos, la preparación y limpieza de archivos financieros suele ser una de las tareas más repetitivas y propensas a errores. Tratar con layouts rígidos, filas desfasadas y nombres de columnas que cambian sin previo aviso genera una fricción operativa constante.

Para resolver este problema de raíz—y manteniendo un enfoque estricto en la seguridad de la información—desarrollé D-MO (Data Micro-Optimizer), una potente herramienta web de procesamiento ETL (Extract, Transform, Load) que corre completamente del lado del cliente.

El Origen: Privacidad por Diseño

Cuando manejamos reportes bancarios o información financiera sensible, subirlos a plataformas externas de conversión representa un riesgo crítico de seguridad. D-MO nació bajo la premisa de la privacidad absoluta: todo el procesamiento ocurre en la memoria local del navegador a través del cliente. Los datos estructurados jamás se envían a un servidor externo, eliminando latencias de red y garantizando un entorno de zero server overhead.

Arquitectura del Pipeline (Flujo de Datos)

El sistema procesa la información de manera secuencial a través de un flujo desacoplado, lo que permite transformar archivos complejos en datasets listos para producción en un solo clic:

   [ Archivo Local ] (.csv / .xlsx / .xlsb)
         │
         ▼
   ┌──────────────┐
   │  DropZone    │ ◄── Validación de Extensión y Tamaño
   └──────┬───────┘
         │ (Buffer / Texto plano)
         ▼
   ┌──────────────┐
   │ File Parser  │ ◄── Detección de delimitadores y headers dinámicos
   └──────┬───────┘
         │ (JSON Normalizado)
         ▼
   ┌──────────────┐
   │  ETL Engine  │ ◄── Reglas de Negocio, Mapeo de Alias y Filtros CUSTOM
   └──────┬───────┘
         │ (Dataset Limpio)
         ▼
   ┌──────────────┐
   │ Export File  │ ◄── Generación de reportes limpios listos
   └──────────────┘

Core Técnico y Capas del Sistema

La aplicación está construida sobre Next.js 14 (App Router) y TypeScript, dividiendo su lógica interna en tres componentes principales:

1. Interfaz y Coordinación (page.tsx)

Actúa como el orquestador del ciclo de vida de los datos. Captura los archivos cargados mediante una interfaz arrastrar y soltar (DropZone), invoca las utilidades de parseo, alimenta al motor de transformación con el estado actual y actualiza dinámicamente las métricas de la UI.

2. Capa de Parseo y Serialización (file-parser.ts)

3. Motor de Reglas Tolerante a Variaciones (etl-engine.ts)

Es el cerebro de D-MO. Utiliza un sistema robusto de emparejamiento basado en funciones de normalización de cadenas de texto. Esto permite que el motor identifique cabeceras dinámicas mediante un catálogo flexible de alias, procesando layouts con sutiles diferencias en los nombres de las columnas sin romper el flujo de transformación.

// Enfoque conceptual del mapeo dinámico y tolerante a alias
export function resolveColumnHeader(header: string, aliasMap: Record<string, string[]>): string | null {
    const normalizedTarget = header.toLowerCase().trim().replace(/[\s_-]/g, '');
    
    for (const [key, aliases] of Object.entries(aliasMap)) {
        if (aliases.some(alias => alias.toLowerCase().trim().replace(/[\s_-]/g, '') === normalizedTarget)) {
            return key;
        }
    }
    return null;
}

Panel de Control e Indicadores en Tiempo Real

Para dar soporte visual y trazabilidad completa al proceso técnico, la UI cuenta con dos secciones clave:

Comparativa de Enfoques

FactorProcesamiento Tradicional (Servidor)Enfoque D-MO (Cliente)
PrivacidadRiesgo potencial al transferir datos a tercerosPrivacidad absoluta; los datos nunca salen del navegador
Costos de InfraestructuraRequiere servidores dedicados y escalabilidad de cómputoConsumo de infraestructura cero; utiliza el hardware del cliente
VelocidadSujeto a la latencia de subida y bajada de la redProcesamiento instantáneo directo en memoria

Conclusión

D-MO demuestra que no siempre es necesario delegar flujos de datos operativos pesados a arquitecturas de backend complejas. Trasladar la lógica de un pipeline ETL directo al cliente usando TypeScript no solo abarata costos de infraestructura, sino que resuelve el factor más crítico en entornos financieros corporativos: el cumplimiento normativo y el resguardo de la información.

Tip: Al construir herramientas de datos basadas en el cliente, prioriza librerías que soporten lecturas por bloques o streaming para evitar congelar el hilo principal (Main Thread) de la interfaz de usuario al procesar datasets masivos.

Fuente: Site