Saltar al contenido
LR-Gutierrez

Ingeniero full-stack y líder de equipos.

Construyo software donde la seguridad es una decisión de diseño, no un checklist final.

Base
Caracas, UTC−4
Programo
Desde 2019
Estado
Abierto a remoto y relocalización
Ahora
Desarrollador senior, banca con PCI-DSS
Antes
Gerente de seguridad de la información, INAC
Stack
ASP.NET Core, NestJS, Angular, Kotlin, PostgreSQL

Trabajo seleccionado

02 proyectos

Dashboard de AuraOS: ocupación en vivo de 90 cajones, ingresos del día, membresías activas y accesos directos a sedes, salidas, modo kiosco y auditoría

Dashboard · ocupación en vivo, ingresos y accesos directos

01 · 2026

AuraOS

Control de acceso a estacionamientos local-first

Reemplaza la bitácora en papel de un estacionamiento con una app para el vigilante en ronda y un kiosco de autoservicio. Sigue funcionando sin conexión gracias a un change journal propio y merge a nivel de campo, y sincroniza con un backend NestJS y PostgreSQL; los operadores inician sesión con biometría respaldada por llaves de hardware.

  • Kotlin
  • Room
  • NestJS
  • PostgreSQL · Prisma
  • SSE · FCM
  • Android Keystore

Panel de control · órdenes, alertas de kilometraje, finanzas e inventario por período

02 · 2026

AutoNex

ERP para talleres, desde la recepción del vehículo hasta la entrega

Órdenes de servicio que registran kilometraje, nivel de combustible, daños previos y fallas reportadas; historial del vehículo por placa o VIN; inventario con control de stock mínimo; recordatorios de mantenimiento por kilometraje vía WhatsApp; y tasas oficiales del BCV extraídas, aprobadas y publicadas según calendario.

  • ASP.NET Core
  • PostgreSQL
  • Angular
  • Ionic · Capacitor
  • SignalR
  • wa-notifier · NestJS
  • Autenticación biométrica (móvil)

Cómo trabajo

La seguridad como insumo de diseño

Dirigí la seguridad de la información en la aviación civil venezolana y hoy construyo dentro de un entorno bancario PCI-DSS. La autenticación, el manejo de datos y los modos de falla se definen junto con la arquitectura, no se auditan después.

Liderar al equipo, no solo el código

He coordinado equipos de desarrollo de punta a punta: levantando requisitos con quienes usan el sistema, planificando y dando seguimiento al trabajo, e informando el avance a la dirección.

IA en el ciclo de desarrollo

Escribo Skills y servidores MCP, y oriento agentes para acelerar las partes repetitivas del ciclo, mientras las decisiones de diseño y la revisión siguen siendo mías.

  • .NET
  • NestJS
  • Laravel
  • OpenJDK
  • JSON Web Tokens
  • Angular
  • TypeScript
  • React
  • Tailwind CSS
  • Kotlin
  • Android
  • Ionic
  • PostgreSQL
  • Prisma
  • SQLite
  • Linux
  • Proxmox
  • GNU Privacy Guard
  • WhatsApp
  • Firebase

Skills

Selecciona una para ver dónde la apliqué

Backend

Frontend

Móvil

Datos

Infraestructura

Seguridad

Integraciones

IA

Liderazgo

Cada skill enlaza a un proyecto o rol donde la usé. Nada aparece sin evidencia.

Experiencia

  1. Ago 2026 – actualidadDesarrollador de software seniorP&A Asociados Gerenciales · consultoría para un banco universal, PCI-DSS
  2. Mar – Ago 2026Consultor de softwareFreelance · ERP para taller automotriz
  3. 2025 – 2026Gerente de seguridad de la informaciónINAC · procedimiento basado en GPG para intercambiar datos sensibles con entidades externas
  4. 2023 – 2024Desarrollador de softwareINAC · API REST de alta demanda con rate limiting, JWT y permisos por ruta
  5. 2023Desarrollador de softwareBolivariana de Aeropuertos
  6. 2022 – 2023Coordinador de desarrollo y sistemasInmobiliaria Nacional · lideré el equipo de desarrollo; infraestructura sobre Proxmox

Maestría en Ciberseguridad, CEUPE (previsto 2027) · Ingeniería en Informática, UNEXCA

Inglés (B2) · Ruso (A1)

Abierto a roles remotos como ingeniero senior o líder de equipo

luisangelrgr@gmail.com

02 · 2026

AutoNex

ERP para talleres, desde la recepción del vehículo hasta la entrega

Órdenes de servicio que registran kilometraje, nivel de combustible, daños previos y fallas reportadas; historial del vehículo por placa o VIN; inventario con control de stock mínimo; recordatorios de mantenimiento por kilometraje vía WhatsApp; y tasas oficiales del BCV extraídas, aprobadas y publicadas según calendario.

Problema

El taller que reemplaza funcionaba en papel: recepción de servicio, historial vehicular y recordatorios de mantenimiento, todo llevado a mano. Necesitaba una sola herramienta que funcionara igual en Android, en el navegador y en equipos Linux.

Rol

Único desarrollador en los tres repos — frontend, backend y el servicio de mensajería — trabajando directamente con el taller que es dueño del sistema y todavía lo opera.

Restricciones

  • Un solo desarrollador, así que el stack tenía que favorecer un único código base en vez de builds nativos separados.
  • No existe una API oficial para las tasas del Banco Central, y esos números alimentan precios — tienen que coincidir exactamente con la fuente, no solo acercarse.
  • La confirmación de entrega de los mensajes de WhatsApp tenía que ser en tiempo real, no por polling.

Decisiones clave

Tasas de cambio scrapeadas con aprobación manual

No existe una API pública oficial para las tasas del Banco Central, así que el sistema extrae el boletín publicado de forma automática. Antes de que una tasa entre en vigencia, un administrador la revisa y la aprueba — un paso manual deliberado para garantizar que coincida exactamente con la fuente, aunque la extracción en sí sea automática. El trade-off: un cuello de botella humano en un pipeline que por lo demás es automático, pero para un número que alimenta precios, una revisión humana le gana a confiar ciegamente en un scraping desatendido.

Un solo código base Angular/Ionic para web, Android y Linux

Ionic y Capacitor despliegan el mismo código Angular al navegador, como app Android y como build de escritorio Linux. El trade-off: menos pulido nativo y menos APIs nativas que tres frontends separados, a cambio de que un solo desarrollador pueda mantener los tres.

Un servicio de mensajería aparte en vez de hablar directo con Twilio

El envío de WhatsApp pasa por un servicio pequeño en NestJS, wa-notifier: la API envía el mensaje por HTTP, y la confirmación de entrega vuelve por SignalR, autenticada con un secreto compartido — en la práctica, un webhook sobre un WebSocket en vez del modelo de webhook propio de Twilio. Twilio sigue como dependencia en el código pero desconectado: sin credenciales configuradas, código muerto de un enfoque anterior.

Autenticación biométrica, solo en móvil

Disponible solo en el build de Android, donde reemplaza escribir una contraseña — comodidad para el personal del taller, no un segundo factor. No es parte del login en web ni en escritorio.

Arquitectura

Cliente Angular/Ionic sobre REST para datos y SignalR para actualizaciones en tiempo real (el estado de entrega de WhatsApp llega en vivo). Los mensajes salientes de WhatsApp van por HTTP a wa-notifier (NestJS), que confirma la entrega de vuelta por SignalR. API en ASP.NET Core respaldada por PostgreSQL; las tasas de cambio se extraen según calendario y quedan a la espera de aprobación manual antes de publicarse.

Resultado

En producción y todavía lo mantengo yo — el taller lo usa a diario para órdenes de servicio, historial vehicular y alertas de WhatsApp.

Qué haría distinto

Sacaría la dependencia muerta de Twilio en vez de dejarla instalada sin credenciales — es exactamente el tipo de residuo que confunde a quien toque este código después, yo mismo incluido.

Tecnologías

  • ASP.NET Core
  • PostgreSQL
  • Angular
  • Ionic · Capacitor
  • SignalR
  • wa-notifier · NestJS
  • Autenticación biométrica (móvil)