Luis Martinez Suarez
Web Developer | Information Technology | PhD in Science
About
A Senior Frontend Developer with extensive experience in React and Vue, specializing in web accessibility and modern styling updates. Eager to leverage expertise in frontend development and best coding practices to contribute to innovative web solutions as a Front End Web Developer.
Most amazing development
A component library that allows non-technical content creators to create and edit landing pages using the Storyblok CMS
Preferred Environment
React, Typescript, Tailwind CSS, Next.js, Vue, Nuxt.js, Visual Studio Code (VS Code)
Contact
Email: luismartinezwebdev@gmail.com
Skype: luismartinezsuarez1984
https://www.linkedin.com/in/luismarsu
Experience
Senior Frontend Developer - Nuxt.js / Sanity Performance Specialist
Toptal2025-09 - Present
- Closed a 3-month performance sprint (Oct-Dec 2025) of 18+ optimization PRs against a September baseline audit, removing unused WebGL/GLSL bundling, moving GSAP and Google Maps off the global bundle, and converting decorative assets to WebP.
- Replaced an ad-hoc 39-line lazy-loader with NuxtImg/Sanity provider integration site-wide across ~20 components in a single 66-file PR, restoring responsive sizes, WebP auto-format, and below-fold lazy loading.
- Split homepage and slug-page GROQ queries into above-the-fold critical and below-the-fold lazy buckets across 9 commits, shrinking the blocking payload that gated LCP on every CMS-driven page.
Skills: Nuxt.js, Vue, Sanity, Sanity Studio, GROQ, TypeScript, JavaScript, Vercel
Senior Frontend Developer - Web Accessibility / WCAG 2 Consultant
Toptal2023-08 - 2025-08
- Performed an accessibility audit of the full public site and fixed all existing accessibility issues, enhancing user experience for individuals with disabilities.
- Updated the admin section of the site from a legacy styling to the newer styling of the public pages, filling the gaps to match the modern styling when necessary.
- Revamped Vue 2 widget across the board: by updating dependencies, refactoring and improving the code, auditing and fixing crossbrowser issues.
Skills: Web Accessibility, WCAG 2, HTML, CSS, Less, Bootstrap, PHP
Senior Frontend Developer - Vue / Nuxt.js Specialist
Toptal2023-03 - 2023-05
- Streamlined the front-end Nuxt codebase, reducing component size and thus boosting the maintainability of the code.
- Developed and instituted a best coding practices document, which served as the team's blueprint for consistent and efficient code development, resulting in a more maintainable codebase.
- Identified and rectified Vuex store misuses, transitioning inappropriate actions to getters using Vuex best practices.
Skills: Vue, Nuxt.js, JavaScript, Frontend, CSS, Travel, Booking Systems, User Interface (UI)
Accessibility Consultant - React / Typescript Specialist
Toptal2022-09 - 2023-03
- Improved the accessibility of a React app by identifying, prioritizing, and resolving issues, resulting in a fully accessible application with no reported issues in the final audit.
- Identified additional accessibility issues proactively beyond the initial audit, ensuring a comprehensive resolution of all important issues
- Completed the project successfully within the allocated time frame, meeting client needs and expectations.
Skills: React, TypeScript, Web Accessibility, WCAG 2, HTML5, CSS, JavaScript, Selenium
Frontend Developer - Vue / Nuxt.js Specialist
Passionate People2021-10 - 2022-06
- Maintained a Nuxt.js internal platform using Nuxt.js 2, Composition API, Tailwind CSS, Sanity, and Storybook, successfully migrating Options API components to Composition API and enhancing existing features, which improved code maintainability and performance.
- Prepared the Nuxt.js-based platform for a live conference by manually testing main user flows, identifying and fixing bugs, and enhancing site layout, ensuring a smooth and error-free user experience during the event.
- Maintained a back-end platform written in Node.js with serverless infrastructure and integrated it with the Sanity client. Tested existing endpoints manually and created new endpoints for reading and editing data from the database, which enhanced data accessibility and system reliability.
Skills: Nuxt.js, Vue, Tailwind CSS, Node.js, Storyblok, Storybook, Visual Studio Code, CSS
Frontend Developer - Vue / Nuxt.js and Tailwind CSS Specialist
Jobsrepublic2020-06 - 2021-09
- Developed a Nuxt component library styled with Tailwind CSS from scratch and connected it to the Storyblok CMS. The product was used by content managers to create landing pages from scratch in a matter of days without the help of the development team.
- Adapted components from the Tailwind UI template library to suit the design needs.
- Audited every component of the UI in terms of accessibility, on-page technical SEO, and performance to achieve a high Lighthouse rank.
Skills: Nuxt.js, Vue, Tailwind CSS, Storyblok, CSS, HTML, Visual Studio Code (VS Code), Agile Software Development
Frontend Developer - Vue and Nuxt.js Specialist
Jobsrepublic2019-10 - 2020-06
- Evolved the codebase, adding new pages, implementing design changes, improving accessibility and performance, and creating a more SEO-friendly URL structure with crawlable pagination and performance.
- Maintained a multisite codebase built with Nuxt.js. Some of these sites were big portals with a large amount of traffic of up to 100,000 monthly visitors.
- Helped build the front end of a dashboard app using Vue 3 and Tailwind UI. Marketers used the app to add and edit entries to a PostgreSQL database via a custom-built form.
Skills: Nuxt.js, Vue, Bootstrap, Node.js, Express.js, Agile Software Development, CSS, HTML
Junior Frontend Developer - Vue.js and Data Visualization
Jobsrepublic2019-02 - 2019-10
- Developed the front end of a single-page application showing data representations related to social media campaigns and landing pages, namely, KPIs of conversion funnels, plots of magnitude versus time, and tabular data.
- Redesigned the app's front end using UI best practices and Figma as a design tool.
- Contributed to the dashboard app, a single-page application built with Vue 2, Auth0 for authentication, TestCafe for E2E tests, BootstrapVue, and multi-language, and followed coding best practices.
Skills: Nuxt.js, Vue, Bootstrap, SCSS, Auth0, Amazon Elastic Container Service (Amazon ECS), Vue 2, Vuex
Projects
Nuxt + Sanity Performance and Core Web Vitals Overhaul
Corporate project
Three-month performance sprint (Oct-Dec 2025) on an FDA-regulated pharma marketing site built with Nuxt 4, Sanity, and Vercel. Closed 18+ optimization PRs against a September baseline audit. Removed unused WebGL/GLSL bundling, moved GSAP and Google Maps off the global bundle, and converted decorative assets to WebP. Replaced an ad-hoc 39-line lazy-loader with NuxtImg/Sanity provider integration site-wide across ~20 components in a single 66-file PR, restoring responsive sizes, WebP auto-format, and below-fold lazy loading. Split homepage and slug-page GROQ queries into above-the-fold critical and below-the-fold lazy buckets across 9 commits, shrinking the blocking payload that gated LCP on every CMS-driven page. Restructured the full Aeonik Pro font family into a subsetted woff+woff2 layout, added Anaheim with Latin, Latin-Ext, and Vietnamese subsets, and preloaded above-the-fold weights from the Sanity CDN. Configured Vercel edge caching for videos, PDFs, images, fonts, and captions with 7 to 30 day TTLs. Diagnosed and shipped a 4-commit Core Web Vitals fix (prerender/ISR conflict, browser cache headers, animation threshold, asset caching) that moved all 10 indexed URLs in Google Search Console from 'Needs improvement' to 'Good' within 48 hours.
Skills: Nuxt.js, Vue, Sanity, GROQ, TypeScript, Vercel, ISR, Core Web Vitals, Web Performance, WebGL
Sanity-to-Vercel ISR Revalidation Webhook
Corporate project
Built an HMAC-verified Sanity webhook to Vercel ISR revalidation route on a Nuxt 4 marketing site. Replaced time-based revalidation with on-demand invalidation, cutting content publish-to-live propagation from up to 60 minutes down to 2-3 minutes and saving an estimated $40/month in ISR write costs. Included signature verification and selective path invalidation driven by the Sanity document type and slug.
Skills: Sanity, Vercel, ISR, Webhooks, HMAC, Nuxt.js, TypeScript, Node.js
Production Support for an FDA-Regulated Pharma Marketing Site
Corporate project
Ongoing 24/7 two-shift coverage rotation on a Nuxt 4 + Sanity + Vercel pharma marketing site under FDA-regulated content constraints. Sustained 100% production uptime since November 2025 and a Sentry performance score of 93 (7-day rolling) by January 2026. Diagnosed a 5-day silent GA4 tracking blackout (CSP blocking regional endpoints, missing nonce on inline gtag init), rebuilt CSP with wildcards, wired violations to Sentry, and added a Playwright check asserting window.gtag on every merge. Audited 1.66 TB of monthly Vercel egress and identified hardcoded MP4 patient videos as the dominant cost driver.
Skills: Nuxt.js, Sanity, Vercel, Sentry, Playwright, Content Security Policy, Google Analytics 4, Production Support, Incident Response, On-Call
Maintenance Agents
Personal project
Autonomous monitoring system for client websites. Scheduled agents built with Bun and Croner pull data from Sentry, Vercel, and Sanity, hand it to Claude for analysis via the Claude Code CLI (no API key, leveraging the Claude Pro/Max subscription), and post Telegram alerts when something needs attention. Agents are strictly read-only observers; any remediation is left to human approval. The suite covers Sentry triage, dependency hygiene, vulnerability scanning, security-header posture (CSP, HSTS, X-Frame-Options), broken-link patrol, asset-weight audit, Sanity housekeeping, and uptime monitoring. A Hono dashboard provides run history and status. Deployed on a Hetzner VPS managed with PM2.
Skills: Bun, Hono, TypeScript, PostgreSQL, Claude Code CLI, AI Agents, Cron Scheduling, Sentry, Vercel API, Sanity
HelloSafelyFed
Personal project
Hub-and-spoke food-safety platform that hosts multiple consumer-facing tools (menu-decoder, dishscout, tinyplates) under a single Google OAuth + magic-link auth, shared Stripe billing, and a credit-based API gating model. Built as a Bun monorepo with Vertical Slice Architecture on the backend: Express 5 with per-feature modules, a static Astro + Vue (TanStack Query) frontend, an Expo React Native shell, and a shared package layer (@repo/api-types, @repo/db, @repo/config) that prevents the data layer from leaking into the contract layer. Ships with custom architecture audit scripts (VSA cross-slice violations, FCIS purity, code-entropy) that run as part of the build pipeline. PostgreSQL + Drizzle, Redis for sessions and rate limiting, deployed via PM2 on a shared Hetzner VPS.
Skills: Bun, Monorepo, Express, Astro, Vue, TanStack Query, TypeScript, Vertical Slice Architecture, PostgreSQL, Drizzle ORM
Shop Appforgelabs
Personal project
Digital storefront for templates and downloadable products with both one-time purchases and a credit-based top-up model. Stripe-backed checkout for products and credit packs, subscription support, signed download URLs for owned products, and per-IP API rate limiting. Categorized product catalog (templates section and category index pages) and a blog with category routing for SEO. Built as a Bun monorepo: Express 5 backend with per-feature slices (auth, credits, downloads, owned-products, payments, rate-limit), static Astro + Vue frontend, PostgreSQL + Drizzle, Redis-backed sessions and rate limiting, PM2 on a Hetzner VPS.
Skills: Bun, Monorepo, Express, Astro, Vue, TypeScript, PostgreSQL, Drizzle ORM, Redis, Stripe
Vsevochart (Vampire Survivors Companion)
Personal project
A companion chart for the videogame Vampire Survivors, showing weapons, passives, and evolution paths in a single searchable view. Around 20,000 monthly visitors. Built with Next.js 15, React 19, Tailwind 4, and Zustand, with Fuse.js powering fuzzy search across hundreds of game items. Game art is pipeline-converted from PNG sprite sheets into CSS background-position icons at build time, keeping the runtime asset footprint small. Hardened with a strict Content Security Policy, X-Frame-Options, and Referrer-Policy headers.
Skills: React, Next.js, TypeScript, Tailwind CSS, Zustand, Radix UI, Fuse.js, Vitest, CSS Sprites, Vercel
Elden Survivors
Personal project
A 'Bullet Heaven' (Vampire Survivors-style) roguelite built on a custom game engine. Auto-firing weapons, horde survival, and RPG stat progression, rendered as code-drawn neon geometry directly on HTML5 Canvas with no graphics library. The engine runs in two modes from the same code: a browser canvas renderer for play, and a headless renderer that runs the full simulation in Node, enabling automated balance testing via Monte Carlo runs and performance benchmarking outside the render loop. Built with React 19, TypeScript, and Vite, with Tweakpane for runtime tuning and dependency-cruiser to enforce module boundaries.
Skills: React, TypeScript, Vite, HTML5 Canvas, Game Development, Custom Game Engine, Headless Simulation, Performance Optimization, Tweakpane, Zod
Shared Infrastructure Platform
Personal project
Multi-tenant persistence layer that hosts every personal and client application on a single Hetzner VPS, keeping per-project hosting cost near zero. Postgres 18 and Redis 8 run in Docker with ports bound to 127.0.0.1 only; remote admin goes through SSH tunnels rather than exposed ports. A single provisioning script (create-app-db.sh) generates a per-app Postgres user, database, and random password and returns a ready-to-use DATABASE_URL; each app is assigned a distinct Redis DB index for isolation. Hard memory caps (1.5G Postgres, 512M Redis) prevent any one app from starving the others. Includes a documented disaster-recovery runbook (pg_dumpall + clean reinit + restore) and an in-place minor-version upgrade path. Powers Maintenance Agents, HelloSafelyFed, Shop Appforgelabs, and several other projects on the same machine.
Skills: Docker, Docker Compose, PostgreSQL, Redis, Multi-Tenancy, VPS Operations, Bash Scripting, SSH Tunneling, Disaster Recovery, Linux
Income Statement
Personal project
Personal finance snapshot tool. A CLI command pulls balances from Mercury, Wise, Kraken, Interactive Brokers (Flex Query), and CoinGecko for crypto pricing, converts everything to EUR, and persists each snapshot in PostgreSQL via Drizzle. Accounts without automated fetchers (Santander, Degiro, and similar) fall back to an interactive terminal prompt during the snapshot run, so a single command captures a full picture across automated and manual sources. A Vue 3 frontend backed by a Hono API charts the time series. Each provider's quirky response shape is parsed and normalized through Zod schemas.
Skills: Bun, Hono, TypeScript, Vue, PostgreSQL, Drizzle ORM, Tailwind CSS, Vite, Zod, Financial APIs
Rico Rico
Personal project
Rico Rico is a demo frontend for a restaurant-reservation booking platform that connects diners with its partner restaurants. The site is built with React/Next.js with Typescript, Mantine and TailwindCSS, and uses Supabase for database and authentication. Images for restaurants are generated using Stable Diffusion models. Integration with the Storyblok CMS allows editors to create custom landing pages for restaurants
Skills: React, TypeScript, Next.js, Tailwind CSS, Mantine, Storyblok CMS, Supabase, AI image generation, Vercel
Telegram AI Bot Project Bulldozer
Personal project
The Bulldozer Telegram bot is a multi-functional chatbot integrated with Telegram, OpenAI, Stripe, and Cloudflare. It handles user conversations, subscriptions, and invoicing. It supports conversation aware chat and images. It is deployed via Cloudflare Workers and connects to a SQLite database
Skills: Telegram Bot Development, TypeScript, Stripe Integration, OpenAI Integration, Serverless Architecture, SQLite, Webhooks, Cloudflare Workers, JavaScript, API Development
React Katas AI Maker
Personal project
React Katas AI Maker is an app that takes React docs as input, gives the user a few options and outputs the full code for an AI generated React Kata, including final code, starting code and README file, to practice the concepts.
Skills: React, Next.js, Tailwind CSS, TypeScript, Vercel, shadcn/ui, OpenAI API
Checklist App for Elden Ring
Personal project
A personal project built from scratch with Next.js, React and Tailwind CSS, with currently around 100 daily users. It shows a checklist of items for the videogame Elden Ring. The user can create a profile and persist the checked items. The app is fully client side so the data is stored in the browser.
Skills: React, Next.js, Tailwind CSS, TypeScript, Vercel, PWA
Improving Accessibility and Styles of a PHP Website
Corporate project
This is a website to view and publish data samples related to scientific publications. As the front-end and accessibility developer, I performed accessibility audits, created GitHub issues, and fixed existing issues. I also updated the admin pages from legacy to modern styles and updated the style guide to include these updates. Finally, I revamped and improved the accessibility of a Vue widget used to upload large files.
Skills: HTML, CSS, Javascript, Accessibility, PHP, jQuery, Bootstrap
Travel Booking Websites Improvement
Corporate project
Onboarded as a front-end developer, I championed major improvements in the Nuxt.js a codebase for travel website allowing package bookings. I targeted large, complex components and initiated a shift towards smaller, single-responsibility modules, vastly enhancing code clarity and maintenance. I corrected Vuex store misuses, transitioned actions to getters, and refactored while shipping features delivery timelines. I delivered features such as advanced web search filters and dynamic campaign pages, boosting user experience. I also filled gaps in end-to-end testing, solidifying the codebase against potential bugs. The engagement culminated in a handover to a new developer, leaving behind a substantially improved and streamlined codebase.
Skills: Vue, Nuxt.js, Vuex
Improving Accessibility in a React App
Corporate project
This project involved improving the accessibility of a React app for a client. After an initial accessibility audit, we identified several tickets that needed to be fixed. I worked on these tickets in a separate branch and made sure to submit pull requests that were easy to understand and review. Once the important tickets were completed, I conducted a full accessibility audit of the app to identify additional issues. I grouped these issues into new tickets and prioritized them based on their importance. Then I worked on the most important tickets to fix them. As a result, the app became fully accessible, and a second accessibility audit resulted in essentially zero issues reported. My contributions to this project helped ensure that the app was usable and accessible to a broader audience.
Skills: React, TypeScript, JavaScript, Accessibility, WCAG 2, HTML5, CSS, Sass, RxJS
Habits App
Personal project
A web app built with React, Firebase, TailwindCSS, and Mantine.dev and bootstrapped from my React starter template. The server state was handled with React-Query, and the global client state was conducted with Redux Toolkit. It allows the user to schedule habits. For example, the user may create a routine titled 'water the plants' with a recurrence of one day.
Skills: React, TypeScript, Firebase, Mantine, Redux Toolkit, Tailwind CSS, Vite, ESLint, plop
Weather Wardrobe Wizard
Personal project
The Weather Wardrobe Wizard sends users weather forecasts and corresponding clothing suggestions. Users can toggle between metric and imperial units, list and image view of clothing, and light and dark themes. Selections are locally stored for guest users, while signed-in users have persistent data stored in Firebase. Premium users enjoy AI-powered packing recommendations from OpenAI. The application was developed with Next.js, React, TypeScript, and Zustand and combines weather forecasts with clothing advice. OpenWeather API powers the real-time data, and the UI is crafted with Chakra UI. Firebase Firestore handles real-time database updates, while Stripe facilitates payments for premium services. Multi-language support and error tracking with Sentry are other key features.
Skills: React, TypeScript, Next.js, OpenAI API, Chakra UI, Zustand, React Query, Immer, React Hook Form, Firebase
Trello Scope Tracker
Personal project
A cloud function deployed on AWS with the serverless framework intercepting webhooks from Trello. When a Trello card is moved to a specific list in the Trello board, the cloud function receives a webhook that triggers a zap from Zapier. This zap appends a value to a Google Sheets spreadsheet.
Skills: Serverless, Javascript, Node.js, Google Sheets
My Personal Website
Personal project
A website built in Next.js in static site generation mode, enabling loading times to speed up. The site is styled using Tailwind CSS and Storyblok CMS as a content editor, and it is deployed to Netlify.
Skills: React, Next.js, Tailwind CSS, Storyblok CMS, Netlify
Vue Admin Dashboard Maintenance
Corporate project
Contribution to the migration of an admin dashboard from Backbone to Vue 2. Maintained the project for two years. The admin dashboard was a complex web app whose main two features were managing the landing page content where users could apply and managing the applicants themselves through multiple application stages.
Skills: Vue, Vuex, Vue Router, HTML, CSS, JavaScript
Content Editor Dashboard
Corporate project
Contributed to creating a content editor dashboard powered by Vue 3 and Vite. The dashboard was used to create and edit new entries in the database and set them as "published." My main contribution was to develop the form to interact with those entries.
Skills: Vue, Vite, Tailwind CSS, JavaScript, HTML, CSS
Landing Page Editor
Corporate project
A Nuxt component library built for Jobsrepublic was integrated with the Storyblok CMS so that content managers could create and edit new landing pages from scratch. Every component included team brainstorming with the content creators to cater to their needs, a development phase and accessibility, and performance and SEO audit to achieve a high lighthouse rank. Changes requested by the team were implemented often within the same day. Tailwind CSS was used for styling, and the UI design was adapted from that provided by the Tailwind UI template library. Each landing page was its own multipage site.
Skills: Nuxt.js, Vue, Tailwind CSS, Storyblok CMS, HTML, CSS, JavaScript
Multi-site Codebase Maintenance
Corporate project
Maintained a multi-site codebase built with Nuxt.js. One of these sites was a big portal with a large traffic of up to 100,000 monthly visitors. Evolved the codebase, adding new pages, implementing design changes, improving accessibility, performance, and creating a more SEO-friendly URL structure with crawlable pagination and performance.
Skills: Nuxt.js, Vue, Bootstrap, Storyblok CMS, HTML, CSS, JavaScript
Conversion Tracker App
Corporate project
A single-page application built for Jobsrepublic, with data visualization related to social media campaigns and landing pages, namely, KPIs of conversion funnels, plots of a magnitude versus time, and tabular data. The app was built from scratch to production-ready with Vue 2, Auth0 for authentication, multi-language, and E2E tests with the TestCafe testing library. The data was consumed from a REST API built by the back-end team. The layout used a customized Vue Bootstrap theme. At the start of the project, coding best practices were established and documented.
Skills: Vue, Bootstrap, Auth0, JavaScript, HTML, CSS, i18n, TestCafe, E2E Testing
AthleanX Home Workout App
Personal project
A progressive web application for mobile devices that helps with workouts at home. The app is a static single-page application developed with Vue 2 that behaves like a native mobile app. I designed and created the UI from scratch using Figma and Tailwind CSS.
Skills: Vue 2, Tailwind CSS, Figma, Vuex, Vue router, ESLint, PWA, UI Design, Mobile Web Development, Frontend Development
Key Skills
- CSS (5 years)
- JavaScript (5 years)
- HTML5 (5 years)
- Vue (3 years)
- React (2 years)
- Tailwind CSS (4 years)
- Front-end Development (5 years)
- Web Development (5 years)
- Nuxt.js (2 years)
- Next.js (2 years)
- TypeScript (2 years)
- Web Accessibility (2 years)
Certifications
Web Accessibility
Udacity | 2020 - Present
Skills: A11Y, Front-end, Accessibility, WCAG 2, Front-end Development
The Complete Junior to Senior Web Developer Roadmap
Udemy | 2019 - Present
Skills: React, Redux, TypeScript, Docker, Redis, Amazon Web Services (AWS), CI/CD Pipelines, SSH, Performance, Front-end
Frontend Development Libraries
freeCodeCamp | 2018 - Present
Skills: React, Redux, JavaScript, Front-end, Front-end Development, JavaScript Libraries
JavaScript Algorithms and Data Structures
freeCodeCamp | 2018 - Present
Skills: JavaScript, Front-end, Front-end Development, ECMAScript (ES6)ECMAScript (ES6)
Responsive Web Design
freeCodeCamp | 2018 - Present
Skills: HTML, CSS, Bootstrap, Flexbox, Front-end, Front-end Development, User Interface (UI), Responsive Layout
Education
PhD in Quantum Chemistry - Ruhr University Bochum, Bochum, Germany (2009-10 - 2014-02)
Master's Degree in Quantum Chemistry - University of Barcelona, Barcelona, Spain (2008-10 - 2009-09)
Bachelor's Degree in Chemistry - University of Barcelona, Barcelona, Spain (2003-10 - 2008-06)
Languages
- Spanish (Native)
- English (Professional)