Software Engineer - TypeScript / Node.js - Python

Construyo sistemas capaces de sobrevivir cuando sus supuestos dejan de ser verdad.

Diseño y desarrollo software que resuelve problemas concretos, desde la lógica de negocio y los datos hasta las integraciones, el testing y el despliegue. He trabajado con más de 1 millón de registros, arquitecturas offline-first, sistemas en tiempo real e integración de LLMs.

00 - Perspectiva

Toda arquitectura comienza como una interpretación de la realidad.

Un sistema nunca es solamente código.

Es una colección de decisiones sobre qué consideramos verdadero, dónde vive el estado, qué ocurre cuando algo falla y cuánto puede cambiar sin perder su identidad.

Mi trabajo comienza al comprender esos supuestos.

01 - Sistemas y decisiones

Lo visible es solo una parte del sistema.

Casos donde la arquitectura nace de una restricción real: concurrencia, trazabilidad o la necesidad de que una decisión pueda explicarse.

01 Vista promocional de Aether con su plataforma colaborativa en tiempo real

Plataforma colaborativa en tiempo real

Febrero 2026 - Mayo 2026

Aether

Plataforma colaborativa en producción con documentos compartidos y tableros Kanban sincronizados en tiempo real.

Realidad inicial
La colaboración simultánea entre documentos, tableros y actividad requería que el estado pudiera compartirse sin perder coherencia.
Fractura
La colaboración simultánea exigía consistencia, autenticación, autorización y una experiencia estable frente a reconexiones y múltiples clientes.
Sistema resultante
Una arquitectura stateless combina PostgreSQL, Redis Pub/Sub y WebSockets para propagar cambios en tiempo real desde un backend con APIs REST.
Decisión
Centralizar las reglas en el backend: JWT y roles protegen el acceso, mientras rate limiting, logging, manejo centralizado de errores y Prisma sostienen la operación.
Evidencia
Plataforma desplegada en producción con más de 50 usuarios activos y propagación habitual inferior a 100 ms, respaldada por testing y CI/CD.
Next.jsTypeScriptNode.jsPostgreSQLRedisPrismaSocket.ioDockerJestSupertestPlaywrightGitHub Actions
02 Vista promocional de E-Planet con una vivienda equipada con paneles solares

Proyecto interno en CONNEXUS SpA

Mayo 2026 - Agosto 2026

E-Planet

MVP full-stack para evaluar la viabilidad técnica y financiera de instalaciones solares residenciales.

Realidad inicial
La evaluación debía combinar información geográfica, parámetros técnicos y cálculos financieros en una experiencia comprensible.
Fractura
El producto necesitaba separar dominios de cálculo solar, identidad, proyectos y financiamiento para crecer sin mezclar responsabilidades.
Sistema resultante
Backend modular con NestJS y TypeORM, REST APIs validadas, autenticación con JWT, Passport y bcrypt, e integración con PVGIS para estimaciones fotovoltaicas.
Decisión
Separar los dominios y encapsular las integraciones externas para que el cálculo solar, la identidad, los proyectos y el financiamiento puedan evolucionar de forma independiente.
Evidencia
MVP presentado internamente y actualmente evaluado con usuarios, con testing unitario/de integración y despliegue contenerizado con Docker.
NestJSTypeScriptNext.jsPostgreSQLTypeORMDockerPVGISJWT

Proyectos adicionales

Herramientas en práctica.

Repositorio público

tasks-cli

Gestor de tareas offline-first para terminal con SQLite local y sincronización opcional.

PythonTyperTextualSQLiteSQLAlchemy
Repositorio (enlace externo)

Repositorio público

Krate

API REST de e-commerce con NestJS y Arquitectura Hexagonal, separando dominio e infraestructura.

NestJSTypeScriptMySQLTypeORMJest
Repositorio (enlace externo)

02 - Aprendizaje

Aprendizajes en contexto.

Conclusiones que aparecieron al diseñar sistemas con concurrencia, datos heterogéneos y necesidades operacionales concretas.

01

Una interfaz rápida no implica un sistema consistente.

En colaboración en tiempo real, la velocidad visible no sustituye una fuente de verdad que pueda reconciliar cambios, reconexiones y concurrencia.

AETHER - ESTADO Y SINCRONIZACIÓN

Consistencia
02

La sincronización no consiste solo en transportar estado.

Cuando varios usuarios editan al mismo tiempo, también importa definir quién controla el cambio, cómo se conserva y cómo se reconstruye.

AETHER - CRDT Y EVENTOS

Tiempo real
03

Una estimación útil debe poder explicar sus supuestos.

Cruzar datos energéticos y financieros exige resultados trazables, no una cifra aislada que el producto no pueda justificar.

E-PLANET - PRODUCTO Y MODELADO

Trazabilidad
04

La continuidad operacional también es una decisión técnica.

En un entorno productivo, un dispositivo, una conexión o una lectura interrumpida puede afectar una cadena completa. Resolver rápido exige observar el contexto antes de intervenir.

ATACAMA - OPERACIÓN Y SOPORTE

Continuidad operacional

03 - Convicciones de ingeniería

Diseñar también es hacer explícitos los límites.

Principios que guían mis decisiones técnicas, desde el modelo de dominio hasta el despliegue y el mantenimiento de un producto.

  1. 01

    El modelo antes que la interfaz.

    La interfaz representa decisiones del dominio; no debería inventar por sí sola el estado ni las reglas que gobiernan el sistema.

    Dominio - Estado - Contratos
  2. 02

    La complejidad debe justificar su existencia.

    Una arquitectura más sofisticada solo es mejor cuando resuelve una restricción real. Abstraer sin necesidad también aumenta el costo de cambio.

    Escala - Mantenibilidad - Costo
  3. 03

    La producción forma parte del diseño.

    Un sistema no termina cuando compila. También debe poder desplegarse, observarse, recuperarse y mantenerse bajo condiciones reales.

    Despliegue - Observabilidad - Recuperación
  4. 04

    Toda arquitectura es provisional.

    Las decisiones técnicas responden a un contexto. Una buena estructura debe resistir el cambio sin asumir que nunca será reemplazada.

    Evolución - Límites - Adaptabilidad

04 - Capacidades técnicas

Tecnologías por área.

Las tecnologías se agrupan como en mi currículum: backend, frontend, datos en tiempo real, cloud, testing, IA y prácticas de arquitectura.

Lenguajes

Base para construir lógica de aplicación, automatizaciones e integraciones.

TypeScriptJavaScriptPythonC#

Backend

Tecnologías para construir APIs y servicios de aplicación.

Node.jsNestJSDjangoFastAPIASP.NET CoreREST APIs

Frontend

Tecnologías para construir interfaces web conectadas a servicios de aplicación.

ReactNext.jsTailwind CSS

Datos & Real-Time

Persistencia, mensajería y comunicación en tiempo real para sistemas con estado.

PostgreSQLSQL ServerRedisSocket.ioRedis Pub/Sub

Cloud & DevOps

Infraestructura, despliegue y automatización para operar software de forma confiable.

AWSEC2S3RDSLambdaAPI GatewayCloudWatchDockerDocker ComposeGitHub ActionsGitLinux

Testing

Pruebas automatizadas para validar lógica, integraciones y flujos completos.

JestSupertestPlaywrightUnit TestingIntegration TestingE2E Testing

IA & Automatización

Integración de modelos y automatización de procesos con atención a límites y confiabilidad.

Integración de LLMsAPIs / SDKsStructured OutputsTokens / Rate LimitsGeminiClaude Coden8n

Arquitectura & Prácticas

Principios para organizar dependencias, límites y evolución técnica.

Arquitectura ModularArquitectura HexagonalSOLIDSistemas StatelessOffline-FirstCI/CD

05 - Experiencia profesional

Ingeniería que llega a la operación.

Experiencia llevando software desde la lógica de negocio hasta su uso real: procesos operacionales, datos a gran escala, automatización, infraestructura y conectividad limitada.

Mayo 2026 - Agosto 2026

CONNEXUS SpA

Desarrollador de Software | Práctica Profesional

  • Diseñé una plataforma de gestión de inventario, compras y bodegas preparada para una operación minera, estructurando más de 400 productos, órdenes de compra y más de 20 reglas de negocio.
  • Digitalicé procesos que dependían de Excel, cuadernos y validaciones manuales, consolidando información distribuida en aproximadamente 8 archivos e incorporando trazabilidad, aprobaciones y control de stock.
  • Automaticé 4 flujos operacionales principales para ingresos, consumos, traslados y préstamos, previniendo duplicidad de datos, movimientos sin aprobación e inconsistencias de inventario.
  • Desarrollé automatizaciones y chatbots con n8n, integrando APIs, webhooks, LLMs, lógica de negocio y sistemas externos para atención y gestión de pedidos.
JavaScriptGoogle Apps ScriptAppSheetGoogle Sheetsn8nAPIsWebhooksLLMs

Diciembre 2024 - Marzo 2025

Frutícola y Exportadora Atacama Ltda.

Desarrollador Full-Stack | Contrato por faena

  • Desarrollé una aplicación Android con backend Django adoptada por 12 usuarios y utilizada para procesar y centralizar más de 1 millón de registros de cosecha.
  • Implementé una arquitectura offline-first con Room/SQLite, gestionando registros pendientes y sincronización posterior con el servidor para operar en zonas con conectividad limitada.
  • Administré despliegues del backend, la base de datos SQL Server y la infraestructura sobre Windows Server, configurando red, firewall y acceso controlado para aproximadamente 30-50 dispositivos distribuidos entre distintos packings.
  • Diagnostiqué incidencias de red, servicios, base de datos, sincronización y dispositivos Zebra/Android, contribuyendo a mantener la continuidad operacional durante períodos de alta carga.
PythonDjangoSQL ServerKotlinAndroidRoom/SQLiteWindows Server

06 - Sobre mí

Entender antes de elegir.

No me interesa elegir tecnologías porque estén de moda. Me interesa descubrir dónde vive la complejidad y construir una solución que pueda explicarse, mantenerse y evolucionar.

Soy Software Engineer e Ingeniero en Informática. Trabajo principalmente con TypeScript, Node.js y Python, llevando soluciones desde el diseño y la lógica de negocio hasta los datos, las integraciones, el testing y el despliegue.

He construido aplicaciones web, sistemas internos y plataformas en tiempo real, además de soluciones offline-first para más de 1 millón de registros. También desarrollo automatizaciones e integraciones de LLMs con APIs, SDKs, structured outputs y control de tokens y rate limits.

Me interesa entender cómo funciona el sistema completo, tomar decisiones técnicas con criterio y entregar soluciones simples, confiables y mantenibles. Mi idioma nativo es el español y tengo inglés intermedio con lectura técnica fluida.

MI NORTE

Comprender el problema, cuestionar sus supuestos y elegir la complejidad que realmente vale la pena sostener.

07 - Educación y certificaciones

Formación seleccionada.

Educación formal y certificaciones principales, con documentos enlazados cuando están disponibles en el sitio.

08 - Contacto

Construyamos algo que pueda evolucionar.

Estoy abierto a oportunidades como Software Engineer, Backend Developer o Full-Stack Developer en equipos donde pueda aportar criterio técnico, automatización e integración de IA sobre productos reales.