Volver al inicio

Proyectos

Una selección de lo que he construido y lo que estoy explorando, del backend distribuido a los sistemas de bajo nivel.

En producción

lebesgue.cl

Plataforma propia para mis clases particulares de matemáticas, física, estadística y programación. Los alumnos reservan clases y pagan en línea, descargan material privado y reciben su sala de Google Meet automáticamente. El backend es serverless sobre AWS y toda la infraestructura está definida como código.

  • API NestJS sobre AWS Lambda y cliente Next.js en un monorepo Turborepo
  • Infraestructura en Terraform: VPC sin NAT (VPC endpoints), API Gateway, RDS, S3, SES y EventBridge Scheduler
  • Reservas, pagos con Mercado Pago (webhooks con firma verificada) y salas de Google Meet automáticas
  • Auth con rotación de refresh tokens y detección de reuso; material servido con URLs firmadas de S3
  • 377 tests end-to-end, 8 ADRs y deploy por GitHub Actions con OIDC (sin llaves de larga duración)
  • TypeScript
  • NestJS
  • Next.js
  • Prisma
  • PostgreSQL
  • Terraform
  • GitHub Actions
Benchmark

metalminer

Código

Estudio comparativo: cada lenguaje implementa la misma API REST (POST /mine busca un nonce SHA-256) y un generador de carga propio mide cómo escala cada modelo de concurrencia. La versión en C no usa librerías: criptografía, HTTP y thread pool están escritos desde cero.

  • C11: SHA-256 desde cero, servidor HTTP/1.1 sobre sockets POSIX y parser JSON propio
  • Thread pool con pthreads y cola ring-buffer (mutex + variables de condición)
  • Go solo con la stdlib (goroutines + atomic) y Rust con axum/Tokio y spawn_blocking
  • Generador de carga en Go con histogramas de latencia; cliente y servidor fijados a cores distintos
  • Tests en los tres lenguajes y script de conformidad que valida que las tres APIs respondan igual
  • C
  • Go
  • Rust
  • Tokio
  • Python
  • Make
Rendimiento

physrust

Código

Motor de física de partículas 2D enfocado en precisión numérica y rendimiento. Integración Verlet con sub-steps, resolución de colisiones que conserva el momentum y un broad-phase con grilla espacial optimizada para caché, paralelizado con Rayon.

  • Integración Verlet con sub-stepping para evitar tunneling
  • Colisiones con proyección ponderada por masa: conserva el momentum y no inyecta energía
  • Grilla espacial en layout CSR (Compressed Sparse Row) para acceso cache-friendly
  • Solver paralelo con Rayon por coloreo de celdas en 6 pasadas, sin data races
  • Dashboard en tiempo real: tiempos por fase, frame time p99 y throughput
  • Rust
  • Rayon
  • macroquad
Full-stack

SieveFlow

Código

Sistema tipo ATS que procesa currículums con NLP, extrae competencias y experiencia, y ordena candidatos por afinidad con el cargo. Gestiona etapas de reclutamiento, entrevistas y notificaciones. Monorepo con un backend NestJS que orquesta un microservicio de NLP en Python.

  • Microservicio NLP en FastAPI: parsing de CVs en PDF, DOCX y TXT
  • Clasificación y matching de candidatos con IA
  • API NestJS + PostgreSQL (Drizzle ORM) y cliente Next.js
  • Monorepo pnpm con tipos TypeScript compartidos entre servicios
  • TypeScript
  • NestJS
  • Next.js
  • Python
  • FastAPI
  • PostgreSQL