Senior Fullstack Engineer · 10+ years · Bogotá, Colombia 🇨🇴
Product built end to end — React at the front, Node and Go behind, Postgres underneath.
- 🏗️ Currently at Eden — microfrontends with NX and Webpack Module Federation for PACS and clinical management systems
- 🧑
✈️ Previously Mercado Libre, Rappi, and Tech Lead of a 7-person team at Treinta, where I owned the architecture and stack decisions - 🧩 Design systems, monorepos, and boundaries that let teams deploy independently
- 🗄️ Backend and data: NestJS, Go, Java/Spring, GraphQL, Postgres with Row Level Security
- 📱 Cross-platform mobile with React Native and Flutter
- 🐙 Open source contributor — webpack, react-boilerplate, mern-starter
- 🎤 Speaker at DevFest Bogotá
- 📆 Shipping production software since 2015
| Project | Contribution |
|---|---|
| webpack | 14 merged PRs migrating the plugin and template layer to ES6 classes (#3657 → #4034) — DllReferencePlugin, LoaderOptionsPlugin, JsonpTemplatePlugin, NormalModuleReplacementPlugin, and ten others |
| Hashnode/mern-starter | 3 merged PRs — React performance improvements (#121), redux-devtools fix (#118), nodemon config (#117) |
| react-boilerplate | Enabled the react/no-array-index-key eslint rule across the boilerplate |
| remote-redux-devtools | socketcluster-client upgrade |
| react-redux-toastr | Migrated the stylesheets from Less to Sass |
| vuesax | Removed stray console logs across components |
| EDgrid | 2 merged PRs — npm packaging |
react-resize — my own: a React component that reports its own size to its children.
A form builder SaaS. Drag fields into place, publish to a public link, and responses land in tables and charts in real time.
The interesting part is the permission model: an anonymous stranger must be able to insert a response into a published form, but must never read anyone's responses. That rule lives in Postgres under Row Level Security with a SECURITY DEFINER helper — not in the application server, where a forgotten check opens the hole. Realtime is a domain port rather than a useEffect, so swapping Supabase for another provider touches one adapter.
21 test suites · CI-gated deploys · 16 written architecture decisions
This portfolio. Astro, no client framework, bilingual, and an accessibility gate in CI that runs axe-core across every route at three breakpoints in both themes.
- 🗣️ Progressive Web Apps — DevFest Bogotá 2016 (slides)
- 🗣️ Introducción a ReactJS — Dev Academy LATAM
- 🗣️ Introducción a ReactJS y React Native — Capital Junior College, Bogotá
| Layer | Tools |
|---|---|
| Languages | |
| Frontend | |
| Mobile | |
| Backend | |
| Data | |
| Architecture & Infra |




