Desarrollador de Software

Ciberseguridad

Javier
Rojas

> Picar código nunca fue la parte difícil.
Decidir, planificar, delegar, revisar y verificar, sí.

Software construido con dedicación, donde las buenas prácticas y el testing no son el extra.

> Sobre mí

~/about.ts

Soy desarrollador de software. Llevo unos tres años construyendo aplicaciones web: partí en una startup, seguí en una consultora, y hoy trabajo en un proyecto propio para estar al día con el desarrollo moderno, aprendiendo arquitecturas, testing y coding agéntico.

Mi fuerte es el frontend, sobre todo Vue 3 y React, y tengo buen ojo para implementar un diseño tal como fue pensado. También me muevo en backend con Laravel y NestJS.

Siempre me importó la calidad del código: la estructura del proyecto, aprovechar bien lo que ofrece el framework, aplicar buenas prácticas. Es la parte que más me entusiasma. También es la que suele quedar para después, porque no se ve desde afuera y compite con los plazos. Lo que cambió con la IA no fue mi criterio, sino lo que cuesta aplicarlo: hoy puedo auditar un proyecto entero en un día, escribir los tests que antes quedaban pendientes y encontrar los problemas mientras todavía son baratos de arreglar. La calidad y el testing dejaron de depender del tiempo que sobre.

// TECH_STACK

Frontend
Vue.js React TypeScript JavaScript Tailwind CSS HTML/CSS Astro
Backend
Laravel NestJS PostgreSQL MySQL Prisma REST APIs
Calidad y arquitectura
Jest GitHub Actions (CI/CD) Git / Git Flow Scrum / Jira Arquitectura en capas
Desarrollo con IA
Claude Code Spec-Driven Development Agentes LLM OpenCode

> Proyectos

~/projects/vetary/
$ git clone vetary
▸ Clonando repositorio...
▸ Done.

Vetary

Proyecto propio may. 2026 - actualidad

Sistema de reservas para clínicas veterinarias construido como SaaS multi-tenant: varias clínicas usan la misma plataforma pero cada una ve solo sus datos. El aislamiento entre clínicas no se repite en cada consulta, está centralizado en un único punto para que no dependa de que nadie lo olvide. Autenticación con JWT y refresh tokens revocables, API REST y una suite de tests unitarios, de integración y E2E con Jest que corre en CI con GitHub Actions junto al linter, la verificación de tipos y las migraciones, en cada integración a develop o main. Lo construyo con agentes de IA, pero definiendo yo la arquitectura y la especificación antes de que se escriba una línea.

NestJS TypeScript PostgreSQL Prisma React Tailwind CSS Jest GitHub Actions

> Experiencia

  1. Colegio Adventista

    abr. 2025 - feb. 2026 (11 meses)

    Encargado de TI

    Administración y soporte de la infraestructura tecnológica del establecimiento: red, sala de computación y equipamiento audiovisual. Gestión de las plataformas educativas Lirmi y SIGE (matrículas, notas y registros académicos) y soporte a docentes y personal administrativo. Registro fotográfico y audiovisual de eventos institucionales, con edición y publicación de contenido en el sitio web y redes sociales del colegio.

    Lirmi SIGE
  2. Neering SpA

    mar. 2023 - jun. 2024 (1 año 4 meses)

    Desarrollador de software

    Consultora de software. Trabajé principalmente en frontend con Vue 3 (Composition API) y Pinia, consumiendo APIs REST de backends en Laravel. Desarrollé gran parte del frontend de una plataforma de reservas de coworking, donde los usuarios creaban cuenta, compraban créditos con Transbank y reservaban salas. En algunos proyectos lideré el frontend de principio a fin, participando junto al project manager en reuniones con clientes para definir alcance y decisiones técnicas. Resolví problemas de funcionalidades en una app móvil hecha en Flutter y me encargué del proceso de publicarla en App Store y Google Play. También di mantenimiento a proyectos heredados en Vue 2 (Options API), hice consultas SQL y di soporte a clientes.

    Vue 3 Pinia TypeScript Laravel Flutter Vue 2 SQL
  3. Neering SpA

    ene. 2023 - feb. 2023 (2 meses)

    Practicante universitario

    Entré haciendo la práctica profesional. Las primeras semanas fueron de inducción a Vue, Tailwind y Laravel, además de correcciones en una aplicación que ya estaba hecha en Vue 2 con Options API. Después construí desde cero el frontend de un CRM con Vue 3 y Tailwind: login, dashboard y gestión de clientes, a partir de los mockups que me pasó el equipo de diseño y consumiendo una API REST hecha en Laravel.

    Vue 3 Vue 2 Tailwind CSS Laravel
  4. Universidad Técnica Federico Santa María

    mar. 2022 - jul. 2022 (5 meses)

    Ayudante de Diseño y Programación Orientada a la Web

    Ayudantía en la asignatura de Diseño y Programación Orientada a la Web de la carrera Técnico Universitario en Informática, guiando y orientando a los alumnos en tecnologías como HTML, CSS, JavaScript y PHP.

    HTML CSS JavaScript PHP
  5. Matchbook Chile SpA

    abr. 2021 - ene. 2022 (10 meses)

    Desarrollador de front-end

    Startup de venta e intercambio de libros, financiada por CORFO. Participé en la construcción del frontend de la plataforma desde cero con React (componentes funcionales y hooks), JavaScript y Sass, trabajando en vistas de la plataforma con maquetación responsive fiel al diseño. Primer contacto con flujo de trabajo profesional: Git Flow, pull requests y Jira.

    React JavaScript Sass

> Testimonios

Foto de María José Pavez Figueroa

María José Pavez Figueroa

Profesional de Comunicaciones

"Javier trabaja de una manera rigurosa, siempre enfocado en encontrar la forma de resolver las solicitudes de las diferentes áreas de trabajo. Colaboración, empatía y excelencia son algunos de los conceptos que sin duda engloban sus capacidades. Como profesional de las comunicaciones, debo destacar además su cordialidad y disposición. ¡Gracias por tu apoyo!"

Vía LinkedIn

> Por qué seguridad

Vengo del desarrollo de software, pero la curiosidad por la ciberseguridad siempre me llamó. Empecé a dedicarle tiempo en serio, siguiendo una ruta propia (cursos, wargames y práctica), mientras construía mis proyectos. En paralelo revisé código de proyectos antiguos para mejorar como desarrollador, y ahí me topé con fallas de seguridad que en su momento no vi. Eso me abrió dos caminos. Uno es construir pensando en que nadie rompa lo que hago, que hoy es parte de cómo desarrollo. El otro, el que de verdad persigo, es el pentesting: aprender a romper para entender de verdad cómo se protege. Estoy recién empezando ese camino, con la eJPTv2 como primera meta.

> Ruta

  1. Personalización de Linux

    2026

    Completado

    Curso de Hack4u. Configuración y personalización del entorno de trabajo en Linux. 3 horas, 14 clases.

  2. Introducción a Linux

    2026

    En curso

    Curso de Hack4u. Permisos SUID y SGID, sticky bit, descriptores, scripting en Bash y redes en Linux. 15 horas, 82 clases. En paralelo: módulo de fundamentos de redes en TryHackMe.

  3. Introducción al Hacking

    2026

    Planificado

    Curso de Hack4u. El núcleo del pentesting: reconocimiento, enumeración, explotación y post-explotación, con metodología PTES. 53 horas, 124 clases. Al terminarlo, evaluar si hay preparación suficiente para rendir la certificación.

Práctica

  • OverTheWire Bandit Nivel 13 de 34
  • TryHackMe Linux Fundamentals Parte 1, Pre-Security módulos 1 y 2

Última actualización: 8 sep. 2026

> Certificaciones

CSFPC
CertiProf
abr. 2021 - abr. 2023
Expirada
Cyber Security Foundation Professional Certificate
eJPTv2
INE Security
meta: dic. 2026
En curso
eLearnSecurity Junior Penetration Tester v2
Sobre el examen →
eCPPTv2
INE Security
2027
Planificado
eLearnSecurity Certified Professional Penetration Tester v2
Sobre el examen →

> Seguridad aplicada

Aislamiento multi-tenant: por qué el filtro va en un solo lugar

Si el filtro de tenant se repite en cada consulta, basta que falle una para que un cliente vea datos de otro. En Vetary lo centralicé en el repositorio base: un único punto que auditar.

Multi-tenancy NestJS Prisma

Seguridad baseline antes de la primera funcionalidad

Rate limiting, headers de seguridad, CORS y hash de contraseñas quedaron configurados en la fase 1, no cuando ya había usuarios.

NestJS Helmet Rate limiting

JWT con refresh tokens revocables

Access token corto y refresh guardado en base de datos con posibilidad de revocación. Qué problema resuelve cada pieza y por qué no basta con una sola.

JWT Autenticación Sesiones

El riesgo de no tener RLS, y por qué lo dejé documentado

Cuando el aislamiento depende solo de la capa de aplicación, un guard que falle es una fuga de datos. Es deuda técnica consciente, y por eso está escrita.

PostgreSQL RLS Deuda técnica

> Contacto

¿Tienes un proyecto en mente o quieres hablar sobre tecnología? Escríbeme.

Privacidad