a backend portfolio · 2026 disponible para trabajar

Construyo sistemas que duran.

Full-Stack Developer con foco en backend y sistemas distribuidos. Tres casos seleccionados a continuación — cada uno con su decisión técnica más importante.

Descargar CV
Foco BackendDistributed systems · APIs
En producción 1 proyectoAether
01 · Selected work

Tres casos.
Tres decisiones.

Cada proyecto se presenta como un caso de estudio: el problema, la solución, y la decisión técnica que define la arquitectura. Hacé click en cualquier caso para leerlo completo.

01
Aether — landing page
Plataforma colaborativa · Feb — May 2026 · live

Aether

Plataforma colaborativa en producción con +50 usuarios. Edición concurrente de documentos y tableros Kanban con sincronización a menos de 100ms — construida sobre Event Sourcing y CRDT.

El problema

El primer diseño usaba CRUD con el frontend dirigiendo la sync. Bajo concurrencia real, el estado entre clientes se desincronizaba sin forma determinista de reconstruirlo.

La solución

Event Sourcing: el estado es una proyección del log append-only en PostgreSQL. CRDT (Yjs) resuelve conflictos de edición localmente, sin servidor de OT ni bloqueos.

Decisión clave
Event Sourcing sobre CRUD — el estado es una proyección del log, no una tabla mutable.
Next.js TypeScript Express PostgreSQL Redis Socket.io Yjs Docker
Ver demo Repo
02
tasks-cli — TUI en terminal
CLI / Developer tool · Mar 2026 · live

tasks-cli

Gestor de tareas offline-first para la terminal. Sin cuenta, sin servidor — SQLite local con sincronización opcional entre dispositivos vía PostgreSQL.

El problema

Las herramientas existentes requieren cuenta, conexión o dependen de un servicio externo que puede desaparecer mañana.

La solución

SQLite local como fuente de verdad. Repository Pattern abstrae el sync, intercambiable sin tocar la lógica de la CLI.

Decisión clave
Repository Pattern — el backend de sync es intercambiable sin tocar la CLI.
Python 3.11 Typer Textual Pydantic v2 SQLite SQLAlchemy Alembic
Repo
03
Krate — Swagger UI
REST API / Backend · May 2026 · live

Krate

API REST de e-commerce con Arquitectura Hexagonal sobre NestJS. Dominio puro sin dependencias de framework, SOLID aplicado por capa y separación estricta entre entidades de dominio y ORM entities con Data Mapper.

El problema

Construir un backend robusto con separación estricta que permita cambiar la infraestructura sin tocar la lógica de negocio, y testear servicios sin levantar la base de datos.

La solución

Arquitectura hexagonal por módulo. Servicios desacoplados via ports con DIP. Data Mapper separa entidades de dominio de ORM entities. SRP por capa, OCP via ports intercambiables.

Decisión clave
Abstract class como token de DI — TypeScript no emite interfaces en runtime; abstract class sí.
NestJS 10 TypeScript MySQL 8 TypeORM JWT bcrypt Docker Jest
Repo
02 · About

El humano detrás
del código.

El backend es donde viven las decisiones importantes. Lo que sigue no es una lista de valores — es cómo esas decisiones se vieron en proyectos reales.

Sebastián Hernández

Full-Stack Developer especializado en backend y sistemas distribuidos. Construyo sistemas que van a producción — desde APIs con arquitectura hexagonal hasta plataformas colaborativas en tiempo real — con foco en las decisiones que definen cómo se comporta el sistema bajo carga, concurrencia y fallos.

Trabajo en todo el stack cuando el problema lo requiere. En Aether construí tanto el backend de Event Sourcing como el frontend reactivo en Next.js. Lo que orienta cada decisión no es la tecnología, sino el problema concreto que resuelve.

Lo que más me importa de un sistema no es lo que hace cuando todo funciona. Es qué tan difícil es entender por qué falló — y qué tan fácil es cambiarlo.

— Sebastián

Cómo pienso en la práctica.

  1. 01

    El modelo primero

    En Aether, el primer prototipo tenía el frontend dirigiendo la sync. Bajo concurrencia se desincronizaba. Mover la fuente de verdad al backend — Event Sourcing en PostgreSQL — resolvió la inconsistencia. La UI proyecta, no decide.

  2. 02

    Producción revela lo que el test no ve

    Aether tiene +50 usuarios reales. El primer deploy reveló que la reconexión de un cliente con 300+ eventos pendientes causaba spike de latencia. Ese bug no existía en desarrollo. Lo resolvió implementar sequence numbers por workspace.

  3. 03

    Elegir con argumento, no por hype

    Elegí Yjs sobre OT para Aether no por popularidad, sino porque OT requiere servidor central para ordenar operaciones — contradecía el diseño stateless. Yjs resuelve conflictos localmente. Cada decisión técnica tiene un porqué documentado.

  4. 04

    Simple cuando el problema es simple

    En tasks-cli, consideré CRDTs para sync entre dispositivos. El caso real es: edité la misma tarea en dos máquinas. Latest-write-wins con device_id resuelve eso. Introducir CRDTs habría sido complejidad para un problema hipotético.

  5. 05

    La arquitectura como inversión

    En Krate, Data Mapper agrega dos clases por entidad y un mapper. El retorno: testear servicios completos con mocks sin levantar MySQL. Esa base cubrió los flujos críticos sin infraestructura. El costo estructural se pagó en velocidad de testing.

03 · Experience

Donde
comencé.

Una posición previa — corta pero real. Una app que aún está en uso, en un entorno sin conectividad estable, con usuarios que dependen de ella.

Dic 2024 — Mar 2025 · 4 meses

Desarrollador Full-Stack & Técnico TI

Frutícola y Exportadora Atacama Ltda. · Contrato por faena
  • Desarrollé en 4 meses una app Android nativa (Kotlin) con backend Django, adoptada en producción por 12 personas de terreno — centralizando más de 1 millón de registros de cosecha y eliminando la pérdida de datos del proceso manual.
  • Diseñé la app como solución offline-first con sincronización automática al recuperar señal, resolviendo las limitaciones de conectividad en faenas agrícolas rurales.
  • Estabilicé la infraestructura TI de 4 áreas: servidores, redes y software corporativo.
Python Django SQL Server Kotlin Android Studio
04 · Stack & Certs

Herramientas
de trabajo.

No una lista de buzzwords. Sólo lo que uso a diario y entiendo en profundidad. Las certificaciones, condensadas — sirven como contexto, no como prueba.

Lenguajes & Frontend

  • TypeScript
  • JavaScript
  • Python
  • Kotlin
  • React + Next.js
  • Tailwind CSS

Backend

  • NestJS hexagonal
  • Node.js Express
  • Django + FastAPI

Bases de datos

  • PostgreSQL preferido
  • MySQL
  • SQL Server
  • Redis cache · pubsub
  • MongoDB

DevOps & Testing

  • Docker
  • GitHub Actions CI/CD
  • Linux
  • Jest + Supertest
  • Playwright
  • Agile / Scrum / AUP

Patrones & Arch.

  • Hexagonal Architecture
  • Clean Architecture
  • SOLID
  • Repository Pattern
  • DIP inyección de deps.

Mobile

  • Android nativo Kotlin
  • Android Studio
  • Offline-first sync
05 · Contact

Hablemos.
Probablemente tenga sentido.

Disponible para proyectos freelance, posiciones full-time y colaboraciones open source. La forma más rápida es por email — respondo dentro de 24 horas.