
Santander 2050
Prosantander · Fedesarrollo · Full-stack development
The roadmap Santander is planning its future with, and the platform that keeps it alive.
- Next.js
- TypeScript
- Drizzle ORM
- Turso
- Tailwind CSS
10°02′N 73°14′W → 5°49′N 73°02′W · from Codazzi to Duitama
I am a fullstack developer. Since 2022 I have been building the Datasketch SaaS platform and websites for public institutions. I am from the Colombian Caribbean, so the warmth comes included.
From 2022 to 2026, one stage per year. Each climb is something I built or fixed, and I assigned its category myself based on size, risk and the time it took. Pick a stage and tap a climb.
Categories as in the Grand Tours: points = km × average gradient². Cat 3 from 150, Cat 2 from 300, Cat 1 from 600 and HC from 900. Each climb gets the length and gradient of a real climb in its category.
Stage 1 · 2022 · Sites for clients · 105.3 km
Candidate lists, tabbed sections and a quiz that ends in recommendations. (5.3 km at 5.5 % · 160 pts)
A step-by-step test in Next.js with randomized questions, answers saved at every step and a downloadable badge at the end. 28 PRs. (8.1 km at 6.7 % · 368 pts)
Department and region pages with maps for the SiB Colombia biodiversity site. (9.9 km at 6.5 % · 416 pts)
ARIA labels, alt text and iframe titles so a site could be used with a screen reader. (6.2 km at 6.1 % · 232 pts)
React components published as a package and shared between two sites for the same client. (7.5 km at 5.9 % · 256 pts)
The first build of the National Federation of Departments website, in Next.js. (13.6 km at 6.4 % · 560 pts)
Stage 2 · 2023 · Joining the platform · 69.6 km
The first of several framework upgrades on the platform. v7.1 and v7.7 came later. (5.3 km at 5.5 % · 160 pts)
The new data upload interface, with table schemas and a per-file size limit. (5.3 km at 5.9 % · 184 pts)
Likes, bookmarks and the extension marketplace UI, plus the button that creates or updates a site. (9.9 km at 6.5 % · 416 pts)
I replaced Tabulator with AG Grid and wrote the first custom editors and cells. (9.7 km at 6.9 % · 464 pts)
Stage 3 · 2024 · The year of data · 134.8 km
Teams inside each organization, with access to apps and databases by team. (8.1 km at 6.3 % · 320 pts)
How many organizations, databases, sites and private charts each plan allows. (5.3 km at 5.9 % · 184 pts)
I was its main contributor: column operations, S3 persistence with presigned URLs, bulk loading and JWT. I have maintained its npm client since v1.0.0. (13.5 km at 7.3 % · 716 pts)
Custom AG Grid editors and cells for images, colors, dates and the other column types. (9.7 km at 6.9 % · 464 pts)
I moved the platform onto the database service and migrated existing databases to the new model, together with the tech lead. (14.6 km at 7.5 % · 812 pts)
Every table can have views with sorting and row grouping, saved on the server. (13.6 km at 6.4 % · 560 pts)
Stage 4 · 2025 · Taking over the platform · 149.2 km
The platform in Spanish, English and Portuguese. The first change touched 130 files. (5.3 km at 5.5 % · 160 pts)
I switched identity providers while the platform was live. Users coming from Auth0 set a password on their next sign-in, and nobody lost access. (11.8 km at 7.5 % · 668 pts)
I rebuilt billing for several plans with a subscription model and an idempotent webhook. The first integration was not mine; this rebuild is. (13.5 km at 7.3 % · 716 pts)
I took the corporate site data out of the repository and read it from the data API: 9,200 fewer lines. (6.2 km at 6.1 % · 232 pts)
I built it from scratch in Express and TypeScript. It picks the engine, Turso or DuckDB, by data size, and supports real-time table editing over websockets. Reads went from 2-5 s to under 1 s. (17.4 km at 8 % · 1104 pts)
I changed the production data model inside a single transaction. If anything failed, every published page would break. (16.5 km at 7.2 % · 860 pts)
Stage 5 · 2026 · New platform and AI · 290.3 km
I moved thousands of users with their organizations and databases in a single run, with zero errors. The scripts can be rerun without duplicating anything and keep the old version’s extensions working. (15.9 km at 7.6 % · 920 pts)
Every published form creates its own database, and every response is saved as a row. (8.1 km at 6.7 % · 368 pts)
A site with a Leaflet map that works without a connection, with a service worker on Next.js. (9.9 km at 6.5 % · 416 pts)
13 field types, a block-based page builder, scheduled publishing and translations. The whole module is mine. (12.9 km at 7.7 % · 764 pts)
An organization can create others with their site and CMS already cloned. If something fails halfway, no orphaned organizations are left behind. (11.5 km at 6.7 % · 512 pts)
I designed the permission matrix and rolled it out across 11 modules, on the server and in the UI, with end-to-end tests. (16.5 km at 7.2 % · 860 pts)
I strengthened access control and security in the engine, and compiled CSS at build time: 92.9% less weight on the critical path. (11 km at 7.6 % · 644 pts)
I reviewed the cloud infrastructure, backed up the data of what was no longer used and shut down what was left over. The monthly bill went down. (9 km at 6.6 % · 392 pts)
I enabled the chat on external sites, with access per organization. (14.4 km at 7.2 % · 740 pts)
I optimized the query behind an endpoint until its response went from 47 MB to 0.1 MB. (10.6 km at 6.8 % · 488 pts)
I designed it in five stages and measured it against 68 reference queries. Searches with no result went from 60% to 0%, recall from 53% to 78%, and it answers in 67 ms (p95). (18.3 km at 7.8 % · 1127 pts)
I cleaned thousands of duplicate rows in financial records without deleting a single legitimate sale. (8.1 km at 6.3 % · 320 pts)
Fifteen projects, between the ones I built on my own and the ones I worked on with the team at Datasketch. Starting with the six that best show what I can do.

Prosantander · Fedesarrollo · Full-stack development
The roadmap Santander is planning its future with, and the platform that keeps it alive.

Instituto Humboldt · SiB Colombia · Front end and data visualization
Colombia's species data, open and navigable, for the Humboldt Institute.

Federación Nacional de Departamentos · Full-stack development
Full-stack platform for the body that represents Colombia's 32 departments.

Programa Anticontrabando · Full-stack development
Anti-smuggling registry and control system for the country's 32 departments.

Datasketch · Full-stack development
Datasketch's content site: it opens fast, the team edits it, and the articles carry their own charts.

Personal project · open source
A training log that lives entirely on the phone: no accounts, no server, works offline.
The rest of what I have built or contributed to.
I started in industrial systems and ended up on the web. Having worked with hardware and sensors still helps me think about how data moves.
Feb 2022 – Present
Datasketch
I am one of the lead developers of the Datasketch SaaS platform: I designed parts of its architecture across all its versions and take part in its technical definition. I built the second-generation database API from scratch, migrated authentication from Auth0 to Clerk and moved every user to the new platform without a single error. On the new platform I built the CMS, roles and permissions, and forms. I also build websites for institutions and work directly with clients and with design and research teams.
Oct 2021 – Jan 2022
CREANGEL Ltda.
I built the backup module of the Ifindit system end to end, with dynamic interfaces and server-side logic in Servlets and JSP. I integrated and configured Apache Solr to improve search and indexing across customer information.
Jun – Oct 2021
Industrial Automation & Informatics
I deployed MQTT on AWS to communicate in real time with sensors on the plant floor. I shipped an application that counted rebar automatically and cut inventory control times. I audited and optimized MySQL databases so queries stopped being the bottleneck.
A platform is built in layers, and each one rests on the one below. I work mostly on the bottom ones: data, APIs and deployment. I do not collect technologies; these are the ones I use often enough to answer for them.
Pick a module to see what it does and what I have built there.
01
Where everything runs: servers, containers and deployment.
What I have built
02
The model and the storage, the part that still has to make sense a year from now.
What I have built
03
The business rules: who gets in, what they can do and how they are billed.
What I have built
04
What people see: fast, readable and usable on a phone.
What I have built
05
The top layer: it only works if the ones below are done right.
What I have built
I am from Agustín Codazzi, in the department of Cesar, and I live in Duitama, Boyacá.
I went into Electronic Engineering because as a kid I wanted to know how things worked inside, and because I thought that was the way to build robots. It was not. But programming courses showed up along the way and I stayed there: watching code turn into something that works felt like reason enough to change direction.
I care about open data reaching someone who can actually use it. Having the data does not count for much if nobody sees the information inside it, and closing that gap is more or less what I do every day.
Lately I have been drawn to modeling systems at scale: replicas, load balancing, content distribution. I have not worked on anything that size yet, but that is where I want to go.
Away from the computer I ride my bike in the mornings. In the afternoons I am usually with my wife, eating somewhere, watching a series, or driving to some small town we have not seen before.
If you want to talk about something I wrote, about open source or about a job opportunity, email me. I usually reply the same day.