DATASHEETVENTICINQUE, MAUROFrontend · Full-Stack

Rev. 2026.08supersedes 2025.11

Español

Copied

A-02

BCome — plataforma

Lead frontend de una plataforma de circularidad: la app principal, el panel de administración y el widget que se embebe en tiendas de clientes.

This sheet is not translated yet. Shown in Spanish.

Specification
ClientBCome · Barcelona, remoto
Typeempleo
PlatformReact 18
Year2024→
RoleLead Frontend Web Developer
StackReact 18.3.1 · TypeScript · Vite 7.1.6 · Tailwind 4.1.17 · Bootstrap 4.6.2 · i18next · Node 22
Commits propios1.702 de 5.246 · git log agrupando 2 identidades de autor
Componentes422 .tsx · git ls-files
Autor1.º de 26
Admin563 commits · repo aparte, React 17
Widget embebido114 commits · repo client-extension

Contexto

BCome mide circularidad y sostenibilidad para marcas de ecommerce. Mi alcance son tres superficies, no una:

  • La app principal (React, 5.246 commits, 1.702 míos). Empezó en marzo de 2021 con React 16, Node 14 y Bootstrap 4; entré en diciembre de 2024 y hoy soy el autor número uno de veintiséis.
  • El panel de administración, un repositorio aparte en React 17, con 563 commits míos. Es la herramienta interna con la que el equipo opera las cuentas de cliente.
  • El widget que se embebe en las tiendas de los clientes (client-extension, 114 commits míos). No es un sitio nuestro: es código que corre dentro del ecommerce de otra empresa, con lo que eso implica — no controlás el CSS que lo rodea, ni la versión del navegador, ni cuándo el host va a mover el DOM debajo tuyo.

Esa tercera superficie es la que cambia cómo se escribe todo lo demás. Un componente que sólo tiene que funcionar en tu propia app puede asumir su entorno; uno que se embebe no.

Opciones

Antes de proponer nada medí la deuda: 1.342 estilos inline, 367 colores hexadecimales distintos escritos a mano y un app.scss de 499 líneas donde convivían variables, utilidades y overrides.

Con eso había dos caminos. Reescribir el frontend de cero, que suena bien en una reunión y significa congelar las entregas durante meses. O migrar sobre el código vivo, que es más incómodo y no tiene un día de lanzamiento.

Decisión

Migrar en caliente, con Bootstrap 4 y Tailwind 4 conviviendo mientras dure. Eso obliga a dos decisiones que no son obvias:

Tailwind entra con Preflight desactivado. El reset de Tailwind pisa el de Bootstrap y rompe formularios y botones en pantallas que nadie tocó hace dos años. Sin Preflight, el riesgo desaparece.

Y no se importa el paquete completo: sólo las capas de tema y de utilidades.

@import "tailwindcss/theme";
@import "tailwindcss/utilities";

La consecuencia práctica es que hay clases de Tailwind que no sirven. La clase border pelada es la más traicionera, porque existe y no hace nada visible: Bootstrap declara su propio borde con !important y gana siempre.

- <div className="border border-gray-300">
+ <div className="border-[1px] border-[#DDD]">

Verificación

React 18.3.1, Vite 7.1.6 y Tailwind 4.1.17 en producción, con Bootstrap 4.6.2 todavía presente. corePlugins.preflight: false en tailwind.config.js, con el motivo escrito en un comentario al lado.

Consecuencias

La migración no tiene fecha de fin y eso es a propósito: cada pantalla que se toca sale migrada, y las que nadie toca no corren riesgo. El costo es que hay que recordar las reglas de convivencia, así que están escritas en el CLAUDE.md del repositorio en vez de en la memoria de quien estuvo ahí.

← Archive