Software Engineer. I build fast, accessible and memorable web products — from the database to the last pixel.

Madrid, Spain
Scroll
01 — About

     

I'm a software engineer with a product mindset. I design and build modern web applications where solid engineering meets a polished user experience.

I work end-to-end: architecture, performance, animation and the small details that make a product feel right. I value simple code, fast iteration, and shipping over talking — good ideas prove themselves in production.

AI tooling and continuous learning are part of how I ship. Claude, Copilot and the rest of the ecosystem are daily companions — leverage, not gimmicks. I keep a close eye on what's new because the toolset of an engineer in 2026 looks nothing like 2022, and standing still isn't an option.

9+
years of experience
15+
core technologies
∞
cups of coffee
AI in the daily loop

I treat AI tooling as leverage. It compresses the boring parts so I can spend my time on architecture, judgment calls and the details that actually matter. The toolset moves fast — staying current is part of the job.

Daily companions
ClaudeGitHub CopilotCursorChatGPT
TypeScriptReactNext.jsVueSvelteGraphQLNode.jsExpressPostgreSQLMongoDBFlutterJestStorybookTailwindVercelGitHub ActionsClaudeGitHub CopilotTypeScriptReactNext.jsVueSvelteGraphQLNode.jsExpressPostgreSQLMongoDBFlutterJestStorybookTailwindVercelGitHub ActionsClaudeGitHub Copilot
02 — Stack

     

Languages

  • TypeScript
  • JavaScript
  • Dart

Frontend

  • React
  • Next.js
  • Vue
  • Svelte
  • Three.js
  • GraphQL
  • Tailwind CSS

Backend & Data

  • Node.js
  • Express
  • REST APIs
  • PostgreSQL
  • MongoDB

Mobile

  • Flutter
  • iOS
  • Android

Quality

  • Jest
  • Storybook
  • Chromatic
  • SonarQube
  • ESLint

Tooling & AI

  • GitHub Actions
  • Vercel
  • Claude
  • GitHub Copilot
03 — Experience

   

Nov 2023 — Present · Madrid, Spain · Hybrid

Frontend Software Engineer

@ eDreams ODIGEO

Frontend engineer at one of Europe's largest online travel platforms. Building customer-facing booking experiences with React and GraphQL on a high-traffic, high-conversion product.

  • Shipping React + GraphQL features on a high-traffic travel product
  • Component library covered with Jest, Storybook and visual regression via Chromatic
  • Code quality enforced through SonarQube and ESLint across the codebase
ReactTypeScriptGraphQLJestStorybookChromaticSonarQubeESLint
Feb 2022 — Nov 2023 · San Sebastián de los Reyes, Spain

Tech Lead

@ Decathlon Digital

Led the Decathlon.es development team — around 20 engineers. Defined the technical strategy in alignment with business objectives, working closely with Decathlon's international tech teams to keep global technical solutions consistent.

  • Led a ~20-engineer team building Decathlon.es
  • Defined the technical strategy aligned with business goals
  • Coordinated with international tech teams on global technical solutions
VueSvelteTypeScriptNode.jsExpressREST APIsJestStorybook
Jun 2018 — Feb 2022 · San Sebastián de los Reyes, Spain

Software Engineer

@ Decathlon Digital

Built features and improvements for Decathlon.es end-to-end. Worked across frontend and Node.js/Express backend in an agile/Scrum environment with OPS, UX/UI and CRO teams, including a server-rendered web app on Decathlon's internal stack.

  • Designed and shipped features end-to-end across frontend and backend
  • Built Node.js + Express services and contributed to a server-rendered web app
  • Collaborated daily with OPS, UX/UI and CRO inside Scrum cycles
VueSvelteJavaScriptNode.jsExpressREST APIsESLint
Jul 2017 — Jun 2018 · San Sebastián de los Reyes, Spain

IS Technician

@ Decathlon Digital

Tech support for Decathlon stores across Spain, Italy, Portugal and Turkey. Trained users on internal tools, troubleshot functional and technical problems, and analysed recurring issues to suggest systemic improvements. The role that opened the door into engineering.

  • Supported Decathlon stores across 4 countries (ES, IT, PT, TR)
  • Trained users on internal tools and workflows
  • Turned recurring incidents into proposals for systemic fixes
Technical supportTroubleshootingUser training
04 — Education

    

2016 — 2018

Higher National Diploma in Web Application Development

IES Melchor Gaspar de Jovellanos

Frontend, backend, databases and software engineering practices. The diploma that bridged me into a Software Engineer role at Decathlon.

2010 — 2012

Higher National Diploma in Computer Network Systems Administration

IES La Arboleda

Server administration, networking, operating systems and IT infrastructure. The foundation for my first role in tech as IS Technician.

05 — Selected work

  

  • Dozens of group games — impostor, bingo, charades, werewolves, trivia and more — to play on a single phone or each on their own in online rooms. On the web and as an iOS app built with Capacitor: no ads, no sign-up, works offline, localized in six languages and self-hosted on my homelab.

    Next.jsCapacitorTypeScriptPostgreSQL
    Solo developer
    Jugueo
    Dozens of group games — impostor, bingo, charades, werewolves, trivia and more — to play on a single phone or each on their own in online rooms. On the web and as an iOS app built with Capacitor: no ads, no sign-up, works offline, localized in six languages and self-hosted on my homelab.
  • Multi-tenant SaaS for any organization that keeps a list of people and charges them — associations, gyms, studios, academies. Self-service onboarding, members, plans and fees, payments, staff roles, audit log and switchable modules like events, agenda and a public website. Tenant isolation enforced by Postgres Row-Level Security.

    Next.jsTypeScriptPostgreSQLDrizzle ORM
    Solo developer
    Guildeo
    Multi-tenant SaaS for any organization that keeps a list of people and charges them — associations, gyms, studios, academies. Self-service onboarding, members, plans and fees, payments, staff roles, audit log and switchable modules like events, agenda and a public website. Tenant isolation enforced by Postgres Row-Level Security.
  • 2025 — 2026PrivateDiscontinued

    Lulivo

    A baby's digital diary for parents: sleep, feeding, diapers, complementary feeding, medicine and growth, with stats to spot patterns. Built solo with Flutter for iOS and Android, in Spanish, English and Italian. It never left beta testing and was closed in 2026.

    FlutterDartiOSAndroid
    Solo developer
    Lulivo
    A baby's digital diary for parents: sleep, feeding, diapers, complementary feeding, medicine and growth, with stats to spot patterns. Built solo with Flutter for iOS and Android, in Spanish, English and Italian. It never left beta testing and was closed in 2026.
  • 2025Private

    Tinta Plana

    Internal admin panel for a family-run screen-printing shop, for its staff only: a library of Pantone ink formulas and staff overtime tracked on a calendar grid, with role-based access and PDF exports. Migrated from Firebase on Vercel to PostgreSQL and Better Auth, self-hosted on my homelab.

    Next.jsTypeScriptPostgreSQLBetter Auth
    Solo developer
    Tinta Plana
    Internal admin panel for a family-run screen-printing shop, for its staff only: a library of Pantone ink formulas and staff overtime tracked on a calendar grid, with role-based access and PDF exports. Migrated from Firebase on Vercel to PostgreSQL and Better Auth, self-hosted on my homelab.
  • 2024Private

    Peña Ortigal

    Public website for Asociación Cultural Peña Ortigal: contact info, event listings, posters and an interactive calendar of the summer festival. Also doubles as the backoffice that powers the members management app.

    Next.jsTypeScriptMongoDBTailwind CSS
    Solo developer
    Peña Ortigal
    Public website for Asociación Cultural Peña Ortigal: contact info, event listings, posters and an interactive calendar of the summer festival. Also doubles as the backoffice that powers the members management app.
  • 2024Private

    ACPO App Manager

    Members management app for the same association. Member registration, membership fee tracking, NFC card activation and NFC-based access control at events. Built with Flutter for iOS and Android, sharing the website's API and database.

    FlutterDartiOSAndroid
    Solo developer
    ACPO App Manager
    Members management app for the same association. Member registration, membership fee tracking, NFC card activation and NFC-based access control at events. Built with Flutter for iOS and Android, sharing the website's API and database.
  • 2023 — Present

    eDreams

    One of Europe's largest online travel platforms. Frontend work on customer-facing booking flows with React and GraphQL — high-traffic, high-conversion product backed by strong testing discipline.

    ReactTypeScriptGraphQLJest
    Frontend Software Engineer
    eDreams
    One of Europe's largest online travel platforms. Frontend work on customer-facing booking flows with React and GraphQL — high-traffic, high-conversion product backed by strong testing discipline.
  • 2018 — 2023

    Decathlon

    E-commerce platform for one of the world's largest sports retailers, used daily by thousands of customers in Spain. Joined as a software engineer and grew into Tech Lead, leading a ~20-engineer team.

    VueSvelteTypeScriptNode.js
    Tech Lead · prev. Software Engineer
    Decathlon
    E-commerce platform for one of the world's largest sports retailers, used daily by thousands of customers in Spain. Joined as a software engineer and grew into Tech Lead, leading a ~20-engineer team.

More on GitHub

See more on GitHub
06 — Process

  

/ 01◆

Understand

Get to the real problem before reaching for code. Ask the right questions, look at the data, write down the assumptions.

/ 02◆

Design

Pick the simplest design that can grow. Document the trade-offs, not the trivia. Optimize for the team that will read this in a year.

/ 03◆

Build

Tight feedback loops, tests where they matter, no broken windows. Quality starts at commit zero, not at the end.

/ 04◆

Ship & learn

Release early, watch what happens, iterate. The best version is always the next one — but only if this one is in production.

07 — Contact

  

You can reach me at the email below. I usually reply within 24 hours. English or Spanish, both work.