Experience
12+
Years shipping web and mobile products across full-stack, leadership, and automation roles.
Experience
12+
Years shipping web and mobile products across full-stack, leadership, and automation roles.
Team led
14
Largest cross-functional team I have led across product, design, frontend, and backend.
Cycle Time
-75%
Reduced release lead times by optimizing CI/CD pipelines and automating quality gates.
Community
100+
Typical attendance for ReactJS Colombia meetups, workshops, and talks.
A few of the products, companies, and communities behind the case studies. Not logos for the sake of logos, just a quick sense of the environments where the work has shipped.
Void
Technical leadership across esports web, mobile, backend, and real-time delivery at Void.
Team Liquid
Product engineering and fan-engagement systems shipped through Optic Power client work.
Rappi
AI martech dashboards and campaign workflows built during the Datagran modernization work.
Subway
Analytics and customer-data product work supported through Datagran.
Telefonica
Enterprise-facing marketing automation interfaces and reporting systems built at Datagran.
ReactJS Colombia
Community talks, workshops, and mentorship through one of Medellin’s most active React groups.
React and TypeScript sit at the center, but the work extends across the full stack: backend services, automation pipelines, testing infrastructure, and delivery tooling.
A curated snapshot of the stack, ordered from the tools that shape products most directly to the supporting systems around them.
From headless commerce and esports to real estate and open source, these projects show how I approach architecture, automation, and delivery under real constraints.
Rebuilt Marcone's storefront into a faster, more accessible headless experience, lifting Lighthouse from 35 to 98 while giving teams room to ship independently.
Led architecture and delivery for a fast-moving esports platform across web, mobile, and backend systems, improving performance, release speed, and team velocity.
Shipped across gaming, SaaS, and martech products in parallel, improving API performance by 40% while supporting launches for Team Liquid, NurtureBoss, and Stardust.gg.
The throughline in my work is making engineering calmer: clearer priorities, fewer avoidable decisions under pressure, and better systems for the people shipping them.
What I do now
My work spans full-stack delivery, developer tooling, and automation: finding the slowest parts of a team's workflow and replacing them with repeatable systems that make shipping feel calmer and more predictable.
How I lead
I stay close to the code, set useful standards, and help teams make better technical decisions earlier.
Outside the sprint
I co-organize ReactJS Colombia, write about DX and workflows, and keep building while working remotely from Medellin.
Projects only show one part of the picture. The other part is how I share what I learn, contribute to engineering communities, and keep my own workflow sharp.
Speaking and community
I am most useful in rooms where the goal is practical clarity: developer experience, technical leadership, architecture, testing, automation, and the delivery systems that make teams feel more confident.
Uses and workflow
The exact tools shift over time, but the priorities stay the same: boring reliability, fewer context switches, and a workflow that supports both deep implementation work and hands-on leadership.
Bias
Boring reliability over shiny setup churn
Default stack
TypeScript, React, Astro, Node.js, Tailwind, Vitest, Playwright
What I optimize for
Fast feedback loops, clear standards, and fewer context switches
I write about software architecture, full-stack systems, automation, and the engineering decisions that help teams ship with confidence. Published in Towards Dev and on Medium.
Cadence
1/mo
One flagship post each month, plus one refresh to an older evergreen article so the archive keeps compounding instead of aging in place.
Refreshes
1/mo
Older evergreen pieces scheduled for refresh so the archive keeps compounding.
Series
3
Related reading tracks already live across the blog archive.
AI speeds up code changes, but ESLint, tests, snapshots, and end-to-end checks are what keep probabilistic output from turning into production risk.
In series: The santi020k way · Part 10
Why I deprecated @santi020k/eslint-config-santi020k in favor of a composable monorepo with clearer packages, better docs, and stronger DX.
In series: ESLint in Practice · Part 3
Positive conditionals usually reduce mental load and make branches easier to scan, review, and change.
In series: The santi020k way · Part 9