Tornar al Blog
6 min read

De design system a plataforma de producte

De design system a plataforma de producte

Des de fa temps em venia ressonant una idea bastant concreta: un design system no hauria de dependre d’una eina concreta per existir, ni d’un flux tancat per mantenir-se útil. La governança que havia vist en altres equips grans ja apuntava en aquesta direcció: més contracte, més criteri compartit i menys dependència d’una única interfície o d’una única font visual de veritat.

També vaig començar a veure el mateix moviment en diferents entorns de producte a gran escala. Alguns equips estaven replantejant els seus sistemes perquè fossin accessibles, consistents i consumibles per LLMs; altres ja treballaven amb sistemes directament code-ready, més a prop d’infraestructura que d’escaparata visual.

En paral·lel, em va passar una cosa que segurament reconeix qualsevol que hagi treballat amb tooling de disseny dependent de tercers: una actualització em va fer notar com de fràgil pot ser construir sobre una plataforma que no controles del tot. Al final es va resoldre, però la intuïció va quedar clara: si l’eina canvia, el sistema no pot estar atrapat en ella.

Així que vaig decidir muntar alguna cosa amb el que ja tenim avui —LLMs, documentació, experimentació i experiència propera— per crear una base de travail que no depengui d’una sola interfície, sinó d’un contracte de sistema capaç d’evolucionar amb nosaltres.

El problema real

Molts design systems tenen components, llibreries, documentació i fins i tot un llenguatge visual bastant sòlid. Però quan toca construir producte de veritat, llançar una nova pàgina o adaptar una experiència a un altre context, massa vegades el sistema es queda curt.

No sol fallar per falta de peces. Sol fallar perquè mai arriba a convertir-se en infraestructura. És d’aquí, perquè no acaba sent la base real sobre la qual disseny, frontend i tooling poden treballar sense tornar a interpretar el mismo problema una vegada i una altra.

La diferència clau

Aquí està la diferència entre un catàleg d’UI i una plataforma de producte. Un catàleg t’ensenya què existeix. Una plataforma, a més, t’ajuda a decidir què fer servir, com fer-ho servir, en quin context encaixa i quines implicacions té canviar-ho.

Més que un catàleg

A Code Ready, l’arquitectura ja està bastant lluny de la idea clàssica de “col·lecció de components”.

Astro Shell & Catàleg
React Interactivitat
Base UI Primitives Headless
JSON Registry Contractes de Veritat

El sistema utilitza Astro como a shell del catàleg i de les pàgines, React per als components interactius i Base UI com a capa de primitives headless accessibles quan encaixa amb el problema a resoldre.

Això, per si sol, encara podria descriure una llibreria ben muntada. El que canvia realment la naturalesa del sistema és una altra cosa: el registry JSON actua com a contracte central i la documentació actual separa de forma explícita l’operacional, el canònic i el referencial.

Aquest matís importa. Significa que el sistema ja no viu repartit entre codi, pantalles i coneixement tàcit de l’equip. Hi ha una estructura clara sobre on està cada veritat, quina capa mana sobre una altra i com s’edita cada part sense introduir soroll o duplicació.

El registry com a contracte

La idea més potent de tot això és que el registry deixa de ser un inventari per convertir-se en un contracte. No només diu que existeix un Button, un Dialog o una HeroLeadForm; també fixa com es descriu, quines props i estats forman part de la seva API, quin exemple el representa i quina documentació l’acompanya.

Però l’evolució més interessant és que aquest contracte ja no cobreix només la implementació tècnica. La documentació canònica nova afegeix capes específiques per modelar decisió, qualitat, criticitat, negoci, marca i locale directament a les entrades del registry.

Això canvia bastant la conversa. El sistema ja no només pot respondre “quin component faig servir”, sinó també “quin nivell d’abstracció té”, “què passa si falla”, “en quin context hauria d’aparèixer” o “quina part del producte toca”.

De peces a decisions

Durant anys hem pensat els design systems com a caixes de peces. Botons, inputs, modals, menús, pestanyes. Tot això continua sent necessari, clar. Però no n’hi ha prou per accelerar la feina real si cada vegada que apareix una pàgina o flux nou l’equip ha de tornar a interpretar des de zero com compondre, quin patró encaixa i quines decisions ja estaven resoltes.

Per això em sembla tan important que Code Ready no es quedi en primitives. El sistema ja contempla sections com a composicions reutilizables a nivell de pàgina, registrades i documentades dins del mateix marc que la resta del catàleg.

Aquí hi ha un canvi de mentalidad important. Una section no és una demo vistosa ni una plantilla informal. És una composició que el sistema considera prou estable i reutilitzable com per convertir-la en un actiu compartit.

Un exemple concret

HeroLeadForm resumeix bastant bé aquesta evolució. No pretén resoldre qualsevol hero ni qualsevol formulari: està pensada com a composició concreta per a pàgines de captació amb un objectiu principal de conversió i una estructura bastant reconeixedora.

Hero Lead Form UI ScreenshotInterfície documentada de HeroLeadForm com a secció del sistema

El més interessant és que el sistema no se queda només en la capa visual. També comença a situar components i seccions en el seu context real: on es fan servir, quin objectiu ajuden a complir i quin compte cal tenir a l’hora de canviar-los.

La pròpia documentació la descriu com a secció pensada per a contextos d’alta intenció, on el formulari forma part directa de l’objectiu de conversió.

El sistema ja modela més que UI

Una de les coses que més canvia amb la documentació actualitzada és que el registry ja no descriu només la interfície. També descriu el context. Hi ha una capa per decidir si quelcom ha de ser primitive, section o composició manual; una altra per modelar criticitat i impacte; una altra per ubicar peces dins del funnel; i una altra per declarar compatibilitat de marca, claus d’i18n i contexts d’ús.

Abstracció de Primitives a Composicions ManualsJerarquia i capes d’abstracció dins del Registry

Això converteix el design system en una eina molt més útil per a equips sènior. Ja no serveix només per alinear la UI, sino també per prendre millors decisions de producte i de manteniment. Pots discutir si una peça mereix pujar al sistema, quant costa trencar-la, on es fa servir bé i on convé no forzar-la.

I tot això sense barrejar capes. La documentació està pensada precisament per evitar que el sistema derivi en una sopa de metadades sense criteri: cada dimensió té la seva doc canònica, la seva semàntica i el seu lloc d’edició.

Marca i locale sense contaminar componentes

Un altre signe clar de maduresa està en com es resolen la marca i la internacionalització. La guia actual ho deixa bastant clar: els components React no han de conèixer ni la marca activa ni el locale actiu. Reben props, consumeixen tokens semàntics i renderitzen; la variació visual es resol en la capa de tokens i la variació d’idioma en la capa d’integració abans d’arribar al component.

Sembla una regla petita, però té bastant impacte. Quan la lògica de marca o copy entra en components compartits, el sistema es torna més fràgil, més difícil de mantenir i més propens a excepcions locals.

Aquí l’aposta és la contrària. Els tokens són la font de veritat visual, amb una cascada explícita entre core, col·leccions de marca i modes, i els components només consumeixen noms semàntics com --color-primary o --color-bg, mai valors hardcodejats ni tokens de marca concrets. Això permet que un mateix component s’adapti a diferents marques o modes sense haver de saber res sobre elles.

Publicar per reutilitzar

Tot això guanya encara més sentit perquè el sistema no es queda tancat en el seu propi catàleg. Code Ready ja es publica com a paquet npm consumible per altres projectes i exposa entrypoints separats per a components, sections, styles, base, brands i types.

Entrypoints exposats pel paquet de Code ReadyArquitectura d’empaquetat i entrypoints independents

Això canvia la naturalesa del design system d’una forma important. Ja no és només una cosa que l’equip consulta per implementar, sinó una cosa que altres projectes poden importar com a base real. La diferència entre “mirar la documentació” i “consumir el sistema” és enorme.

També m’agrada que aquesta publicació no barregi coses diferents sota una mateixa etiqueta. Els entrypoints de styles i base, per exemple, separen la definició del sistema visual de la seva aplicació al DOM, cosa que fa més clar quina part aporta tokens i quina part aporta comportament base.

Pensat per a disseny, frontend i LLMs

Hi ha un altre detall que em sembla clau i que probablement marqui més sistemes els propers anys: la documentació no està escrita només per a humans. El README i el workflow deixen clar que aquesta base està pensada per a disseny, enginyeria i flurs assistits per LLMs, amb rutes d’edició, contractes i regles prou explícites com perquè una màquina també pugui operar sobre elles sense inventar semàntiques pel camí.

Si vols un sistema consumible per més d'un actor —persones, equips, tooling, automatització— no pot viure tancat en una maqueta ni en un repositori ambigu. Ha de viure en contracte, tipus, tokens, documentació i regles d'edició.

Marc Camps Oller Product Engineer & Design Systems lead

No es tracta d’eliminar eines de disseny. Es tracta que el sistema sobrevisqui a elles.

Cap a nous projectes

I potser aquí hi ha la part que més m’interessa de tot això. Una vegada tens un design system publicat, amb un contracte clar, capes de metadades útils, seccions reutilitzables i suport explícit per a marques i contexts, ja no estàs tan lluny de fer-lo servir com a base per engegar projectes nous.

Workflow de generació i inici de projectes des del Design SystemWorkflow complet des del Briefing inicial fins a la pàgina generada

En aquest escenari, l’input ja no és “dibuixem una pàgina des de zero”, sinó una cosa bastant més estructurada: quin és l’objectiu, quin contingut tenim, quins idiomes suporta, quin context de marca s’aplica i quin nivell de composició encaixa millor.

Això no substitueix el treball de disseny. Però sí que canvia molt on comença. En lloc de començar refent la infraestructura, comences prenent decisions sobre una base que ja existeix.

Compondre en el consumer

I això obre una possibilitat especialment interessant: no cal que cada pàgina nova existeixi per endavant com una plantilla tancada. En molts casos, un consumer podria muntar-la dinàmicament a partir de components del sistema, sempre que el briefing inclogui estructura, contingut, objectiu, idiomes i context de marca.

Aquí el punt clau és que el LLM no hauria d’inventar la interfície des de zero. Hauria de compondre sobre un contracte ja definit: quines peces existeixen, quin nivell d’abstracció tenen, quan convé utilitzar una section i quan convé muntar la pàgina manualment al consumer.

1

Briefing (Input)

1. Entrada

Es defineixen els objectius comercials, el públic objectiu, les marques a aplicar i el contingut principal del nou flux.

2

Registry & Filtratge

2. Contracte

El sistema consulta el registry buscant el tipus de components que compleixen el contracte necessari segons marca i locale.

3

Selecció de Peces

3. Selecció

S'elegeixen les seccions estables (sections) o components bàsics (primitives) requerits per al layout.

4

Composició

4. Integració

El consumidor (o un model de llenguatge) integra i personalitza els components adaptant-los al flux sense reescriure estils.

5

Sortida (Output)

5. Producció

Es desplega la pàgina final consistent, multiplataforma i connectada a la infraestructura del sistema.

Això desplaça el valor del design system. Deixa de ser només una llibreria d’UI i passa a ser una base estructurada perquè equips i LLMs muntin producte amb més velocitat i menys ambigüitat.

El que realment estem construint

Por això, si hagués de resumir-ho en una sola idea, diria això: Code Ready no vol ser la font de veritat visual. Vol ser la base de veritat operativa per construir producte sense dependre d’una sola eina.

I per a mi, aquest és just el punt en què un design system deixa de ser una llibreria i comença a convertir-se en plataforma.

El següent pas natural en aquesta sèrie és entrar al nucli d’aquesta idea: per què el registry importa tant i com deixa de ser un inventari per convertir-se en contracte i capa de decisió.