OM
EN ES

Situación

Las superficies de producto compartían marca sobre todo en aplicaciones Angular—con un PoC corto en React—mientras tokens y componentes tendían a divergir si cada consumidor los evolucionaba por su cuenta.

Tarea

Establecer una base de design system: tokens semánticos, reglas de composición y packages versionados que los equipos pudieran adoptar sin atar cada producto a un único runtime de UI.

Acción

Dejé el núcleo en tokens, reglas de composición y primitivos; los widgets de negocio quedaron fuera de la library. Generé tokens semánticos desde un JSON de configuración vía pipeline de build, publiqué packages versionados con review, changelog y deprecations, y documenté el uso con demos en la library y Storybook.

Resultado

Las apps Angular pudieron migrar a la v3 módulo a módulo en lugar de un big bang; un PoC corto en React validó el consumo cross-framework sin forzar paridad total.

Forma del sistema

En el núcleo: tokens de color, tipografía y espacio; reglas de composición; componentes primitivos (button, input, card y similares).

Fuera de la library: widgets de negocio atados a un dominio de producto.

Cómo se aprendía: sección de demos en la library (forms, layout, etc.) más Storybook para documentación.

Quién lo consumía: Angular era el camino de producción. React fue un PoC corto de viabilidad—señal útil, no la inversión principal.

Decisiones

Tokens semánticos desde una fuente generada

Elegimos: tokens semánticos definidos en un JSON de configuración y producidos por un pipeline de build/generación. Rechazamos: copiar a mano valores crudos en cada app o package de framework. Por qué: una sola fuente de verdad alinea nombres y valores; los packages consumen artefactos en lugar de forkar la paleta.

Inversión asimétrica Angular vs React

Elegimos: adopción profunda en Angular; React solo como PoC cuando el cliente preguntó si funcionaría. Rechazamos: forzar paridad total Angular/React desde el día uno. Por qué: la mayoría de consumidores reales eran Angular. Un PoC corto respondió la pregunta React sin retrasar el sistema que las apps de producción necesitaban.

Packages versionados, no un mega-bundle

Elegimos: packages versionados de forma independiente (core + packages de componentes). Rechazamos: un solo mega-package sin versionado que cada app tuviera que tragar entero. Por qué: los consumidores actualizan con criterio; los majors se anuncian antes de romper builds.

Gobernanza y versionado

  • Los cambios pasaban por review antes del merge.
  • Los releases iban versionados; los majors se notificaban al cliente con anticipación para que las apps consumidoras pudieran planear.
  • Cada release exigía changelog y deprecations explícitas—sin breaking changes silenciosos.

Camino de adopción

PoC React (corto): un demo greenfield instaló core más packages de componentes (button, inputs, cards, etc.) solo para validar viabilidad.

Angular (adopción real): el cliente ya tenía dos generaciones previas del design system. La v3 fue un rediseño completo, así que la migración fue módulo a módulo en apps que lanzaban superficies nuevas—no un big bang de cada pantalla. El equipo de DS y los devs de módulos de app mantuvieron un feedback loop cerrado: los issues tempranos se resolvían con patches rápidos y robustos, no con forks eternos.

Qué rechazamos

Desde el inicio rechazamos:

  • Meter widgets de negocio en el núcleo de la library
  • Copiar tokens a mano en cada app
  • Forzar paridad total Angular/React desde el día uno
  • Publicar un mega-package sin versionado
  • Saltar changelog o deprecations en los releases

Lección transferible

Antes de tocar un design system existente, entiende su documentación—y deja el sistema mejor documentado de lo que lo encontraste. Crear “algo nuevo” sin ese ciclo solo reproduce el drift.

Límites de este texto

Esta narrativa está anonimizada. No se muestran archivos de tokens propietarios, nombres internos de packages, screenshots de producto ni marcas de clientes. Trabajo de cliente bajo NDA — se muestra la arquitectura y las decisiones, los detalles de producto quedan fuera por diseño.