TRABAJO / CASO 01

UDS —
uDocz Design System

El design system que consumen los cuatro productos de uDocz: 76 componentes CSS —y contando: crece al ritmo de los productos— sobre dos capas de tokens. Lo diseño, lo documento y lo mantengo.

Rol
Diseño, arquitectura y gobernanza
Alcance
4 productos lo consumen
Sistema
76 componentes · 2 capas de tokens
Releases
4 · SemVer · changelog
El problema

Cuatro productos, cuatro maneras de dibujar un botón.

uDocz creció por productos: la experiencia B2C de estudio, el dashboard para instituciones, la suite de profesores embebida en el LMS y los programas del sector público. Cada uno resolvía su interfaz por su cuenta — al auditar uno de ellos encontré más de 50 implementaciones one-off y hasta cuatro variantes del mismo botón conviviendo en producción.

El costo real: cada pantalla nueva volvía a decidir cosas ya decididas, y cada inconsistencia era una conversación más en el handoff con desarrollo.

PASA EL CURSOR POR CADA BOTÓN — LOS CUATRO PRIMEROS RECONSTRUYEN LA AUDITORÍA; EL QUINTO ES EL DEL SISTEMA
DEMO 01 — EL MISMO BOTÓN, CUATRO VECES (Y CÓMO QUEDÓ) · INTERACTIVO
La arquitectura

Primitivos y semánticos: dos capas de tokens.

El sistema separa primitivos (paletas por escala, espaciado en base 2px, radios, elevaciones, tipografía) de semánticos (texto, superficie, borde, marca, feedback — nombrados por rol). Los componentes consumen solo semánticos; los primitivos anclan la capa semántica y nada más.

Con eso, el theming sale casi gratis: dark mode y las variantes de producto se resuelven re-apuntando la capa semántica con un atributo. Los 76 componentes heredan sin cambios.

384 tokens en dos capas; ningún componente tiene un color hardcodeado. NINGÚN COLOR FUERA DEL SISTEMA — LAS EXCEPCIONES SE DOCUMENTAN INLINE
TEMA PRODUCTO
Reporte de actividad

Colegio San Agustín — 2026-S1

Al día LTI 1.3
128 estudiantes activos ▲ 12%

Licencia por expirar

El plan del colegio vence en 14 días. Renueva para no perder el acceso.

CLICK EN CUALQUIER PIEZA PARA LEER SU CADENA DE TOKENS — EL COMPONENTE NO SE TOCA; TEMA Y PRODUCTO SOLO RE-APUNTAN LA CAPA SEMÁNTICA
DEMO 02 — COMPONENTES REALES DEL SISTEMA, SOBRE SUS TOKENS REALES · INTERACTIVO
PASA EL CURSOR POR LA ESCALA — 63 PRIMITIVOS REALES; LOS COMPONENTES NO PUEDEN TOCARLOS: SOLO LA CAPA SEMÁNTICA ANCLA AQUÍ
DEMO 03 — LAS 7 PALETAS, CON SUS ROLES SEMÁNTICOS RESUELTOS EN VIVO · INTERACTIVO
La gobernanza

Nueve reglas de contribución, escritas.

Cualquier cambio al sistema pasa por nueve reglas documentadas. Las cuatro que más trabajo hacen:

  • El sistema define apariencia y comportamiento, no lógica de aplicación. Si un componente necesita JS, el sistema documenta el comportamiento y cada producto lo implementa.
  • Nada se elimina sin plan de migración. Un breaking change es una versión mayor con la ruta de salida documentada.
  • Sin parches de estilo. Heredé 11 excepciones que forzaban estilos por encima del sistema; quedan 2, cada una con su razón documentada.
  • Los componentes nuevos no entran directo al sistema. Nacen en el producto que los necesita, con las convenciones del sistema, y se promueven cuando sirven a más de un producto — sin renombrar nada.

En la v0.4.0 ese mecanismo promovió 49 componentes de una vez, del staging B2C al sistema, sin romper a ningún consumidor: de 27 a 76.

RELEASE V0.3.1 → V0.4.0 COMPONENTES: 27/76
LA PROMOCIÓN V0.4.0, RECONSTRUIDA DEL CHANGELOG REAL — LOS NOMBRES SON LOS DE VERDAD
DEMO 04 — DE 27 A 76 EN UN MOVIMIENTO PLANEADO, LOTE POR LOTE
Accesibilidad

WCAG 2.2 AA, con cada fix en el changelog.

Lo auditado y corregido, con fecha y versión:

  • El texto informativo subió de 3.1:1 de contraste a 7.2:1 — de fallar el mínimo AA a superar el estricto AAA. La demo de abajo lo calcula en vivo sobre los hex reales.
  • Indicador de foco agregado a 21 de 27 componentes que no lo tenían.
  • Lectores de pantalla auditados componente por componente: navegación, diálogos, avisos y estados anunciados.
  • prefers-reduced-motion respetado: con la preferencia activa, las animaciones se apagan. Ningún objetivo táctil baja de 44×44 px.
  • En dark, marca y acento suben un stop de la escala para sostener el contraste.
ANTES — HASTA V0.2

Tu licencia expira en 14 días. Renueva para no perder el acceso.

--color-blue-400 · · ✗ FALLA AA
DESPUÉS — V0.3

Tu licencia expira en 14 días. Renueva para no perder el acceso.

--color-blue-600 · · ✓ AAA
NAVEGA CON TAB — EL ANILLO DE FOCO LLEGÓ A 21 COMPONENTES QUE NO LO TENÍAN
EL RATIO SE CALCULA EN VIVO SOBRE LOS HEX REALES — Y LA DEMO SIGUE EL TEMA DEL SITIO: EN DARK CUENTA POR QUÉ EL OVERRIDE RE-APUNTA EL TOKEN
DEMO 05 — CONTRASTE MEDIDO EN VIVO Y FOCO VISIBLE · INTERACTIVO
El estado

Documentado, versionado, en producción.

Cada componente llega con documentación de uso —cuándo usarlo, cuándo no, anatomía, do's y don'ts— y su página de preview aislada. El conjunto se publica con releases versionadas y changelog: 76 componentes, 40 iconos propios, 4 releases. Ante una duda de implementación, la respuesta está escrita en el sistema; cuando el sistema se queda corto, se corrige y sale en la siguiente versión.

Los prototipos de los cuatro productos consumen estos mismos tokens: lo que se aprueba en un prototipo ya está dentro del sistema.

SHOWCASE CATÁLOGO: 76 COMPONENTES · EN VIVO AQUÍ: 6
Variantes --primary --outline --ghost
Tamaños y estados --sm --md disabled
ELIGE UN COMPONENTE — LO QUE SE RENDERIZA ES EL CSS REAL DEL SISTEMA, Y EL LECTOR MUESTRA SU API
DEMO 06 — EL SHOWCASE, EN EL SHELL DEL PORTAFOLIO: COMPONENTES REALES EN VIVO · INTERACTIVO
En curso

Un design system nunca está terminado.

La v0.4.0 dejó trabajo abierto, registrado en el changelog:

  • El refactor de los estilos forzados que llegaron del staging. La promoción trajo 11 !important, un recurso que las reglas del sistema prohíben porque vuelve impredecible qué estilo gana. Nueve resultaron innecesarios y ya salieron; los dos que quedan son excepción documentada: la única forma de que un ajuste móvil le gane a estilos que el JS escribe inline.
  • La verificación de dark mode componente por componente. Se hizo completa cuando el sistema tenía 27; los 49 promovidos heredan el tema oscuro de la capa semántica y su revisión uno por uno está en curso.
  • El comportamiento vive en cada producto, por decisión. El sistema entrega estilos y estructura, no JS: la navegación por teclado de un modal o el anuncio de un toast los implementa cada consumidor, y la doc fija exactamente qué le toca a cada quien.