Design System su Figma - Davide Onida Blog

Progettare un Design System scalabile su Figma

Un Design System non è semplicemente una libreria di componenti o una raccolta di regole visive, è un sistema che definisce coerenza, consistenza e scalabilità all’interno di un ecosistema digitale in continua evoluzione.
Quando un brand cresce e si distribuisce tra servizi, piattaforme e applicazioni differenti, mantenere un’identità visiva chiara diventa sempre più complesso. Senza una struttura condivisa, il rischio è quello di creare esperienze frammentate, incoerenti e difficili da mantenere nel tempo, sia dal punto di vista del design che dello sviluppo, il brand rischia di essere schiacciato dal proprio peso cresciuto in seguito all’aggiunta di variabili, eccezioni e adattamenti inconsistenti fra loro.

Un Design System nasce proprio per risolvere questo problema, creando una base comune fatta di regole, token, componenti e pattern condivisi. L’obiettivo non è limitare la flessibilità progettuale, ma costruire un framework capace di adattarsi a contesti differenti mantenendo comunque un linguaggio visivo riconoscibile e consistente.
La forza di un sistema ben strutturato sta nella sua capacità di evolvere senza perdere identità. Ogni componente, variabile o scelta visiva contribuisce a costruire un ecosistema coerente, facilitando la collaborazione tra designer e developer e accelerando la realizzazione di nuovi prodotti digitali senza compromettere la qualità dell’esperienza.

La costruzione del sistema dovrebbe partire dalle Foundations, un unico file pensato come nucleo centrale dell’intero ecosistema. È qui che vengono definiti e organizzati tutti i design token primitivi come colori, spaziature, dimensioni, border radius e border width, costruendo una base solida e coerente su cui far evolvere il sistema nel tempo.

Le palette colore dovrebbero includere tonalità neutrali, colori di brand e colori di feedback strutturati secondo scale consistenti. Una convenzione comune prevede valori da 50 a 900 per i grigi e da 100 a 700 per i colori principali. I token primitivi generati non dovrebbero essere utilizzati direttamente nei componenti, ma collegati a semantic token che ne definiscono il ruolo all’interno dell’interfaccia, ne abbiamo parlato anche in questo articolo.
La separazione tra primitive token e semantic token permette di mantenere il sistema più scalabile e prevedibile. Qualsiasi modifica alla base si propaga automaticamente a tutti i layer superiori, mantenendo consistenza visiva e semplificando la manutenzione del design system.

La gestione dei token dovrebbe essere centralizzata attraverso strumenti come Token Studio, utilizzando anche sistemi AI per generare palette, naming convention e strutture coerenti da sincronizzare poi con le Variables di Figma.
Anche il sistema di sizing dovrebbe seguire una logica semantica. Questo approccio consente di costruire componenti più adattabili e facilmente scalabili attraverso varianti come small, medium e large, mantenendo ordine e coerenza nella progettazione. Meglio quindi organizzare i token in collezioni separate, ad esempio colori, spacing o sizing, rende più semplice supportare modalità differenti come light mode, dark mode o configurazioni multi-brand.

Una parte fondamentale riguarda la documentazione su Figma, che aiuta il sistema a rimanere leggibile e comprensibile nel tempo. All’interno del file Foundations possono convivere anche asset condivisi come icone e immagini, anche se in alcuni contesti è preferibile mantenere questi elementi separati nei file dedicati ai componenti.
Le pagine su Figma dovrebbero essere organizzate in modo da avere una thumbnail identificativa, una panoramica chiara dei primitive token e dei semantic token e una struttura ordinata che faciliti la navigazione da parte del team.
Una documentazione ben organizzata riduce il tempo necessario per comprendere il sistema e rende molto più semplice il lavoro quotidiano tra designer e developer.

Design System su Figma - Davide Onida Blog

La struttura della libreria componenti dovrebbe mantenere regole coerenti. Una volta definito il file Foundations, questo dovrebbe essere pubblicato come libreria Figma condivisa, e tutti i componenti del design system dovrebbero utilizzare esclusivamente semantic token provenienti da questa sorgente centrale.

La libreria diventa quindi la base del nostro design system composta da atomi e componenti semplici, seguendo la logica dell’Atomic Design. Questo approccio permette di creare interfacce più complesse in modo modulare, accelerando la progettazione e mantenendo maggiore consistenza sia visiva che tecnica.

Anche l’organizzazione dei component set dovrebbe seguire una struttura chiara e documentata. Ogni pagina dovrebbe introdurre il componente spiegando la struttura dei component set, l’ordine delle proprietà e il corretto utilizzo dei semantic token.
I componenti dovrebbero essere organizzati in component set coerenti, mantenendo sempre lo stesso ordine delle proprietà. Una struttura efficace può includere style, state, size e proprietà aggiuntive come text, Boolean o instant swap.
Anche gli stati interattivi dovrebbero seguire una gerarchia prevedibile, ad esempio default, hover, pressed, disabled e focus. Questa coerenza semplifica sia la manutenzione della libreria sia il lavoro di chi utilizza quotidianamente il sistema.

Una struttura solida permette alla libreria di evolvere più facilmente anche attraverso strumenti di AI. Una volta definita una struttura coerente, la libreria diventa molto più semplice da estendere nel tempo. Strumenti come Claude possono supportare la generazione di molecole e organismi più complessi partendo dalle Foundations e dai componenti base già presenti nel sistema.
L’obiettivo non è sostituire il lavoro di progettazione, ma accelerare la composizione delle interfacce mantenendo allineamento, consistenza e scalabilità.

Il collegamento tra design e front-end diventa in questo modo il più fluido possibile. Attraverso strumenti come Figma MCP è possibile utilizzare la struttura dei token e dei componenti per velocizzare la generazione di HTML o componenti React pronti per lo sviluppo. Questo approccio riduce il gap tra design e sviluppo, facilitando la conversione delle interfacce progettate in codice reale e mantenendo una maggiore coerenza tra layer visuale e implementazione tecnica.

La governance del Design System

Una parte fondamentale nella crescita di un Design System riguarda la definizione della sua governance, ovvero l’insieme di regole, ruoli e ownership condivise tra design, engineering e product. Stabilire linee guida comuni per naming, proprietà, accessibilità e testing permette al team di contribuire in modo coerente e controllato, evitando frammentazione e decisioni scollegate tra loro. Allo stesso tempo è importante definire chiaramente chi approva modifiche, nuovi componenti o aggiornamenti della libreria, così da mantenere il sistema stabile anche quando cresce nel tempo.

Per evitare inconsistenze e drift tra design e sviluppo, il sistema dovrebbe essere accompagnato da una fase continua di review. Audit periodici su UI e codice aiutano a identificare differenze tra componenti prima che si diffondano all’interno del prodotto, mantenendo maggiore allineamento tra libreria e implementazione reale. Anche i componenti dovrebbero seguire un lifecycle chiaro, passando attraverso stati come draft, beta, stable e deprecated, supportati da changelog e documentazione sempre aggiornati.

Questa manutenzione continua diventa parte integrante della fase di optimization, in cui il Design System viene monitorato e migliorato costantemente. Analizzare l’utilizzo reale dei componenti, eliminare duplicati e ottimizzare token e documentazione permette di mantenere il sistema leggero, efficiente e realmente adottato dai team. I Design System più maturi non sono sistemi statici, ma ecosistemi che evolvono insieme al brand e ai prodotti digitali.

Per questo motivo la fase di growth non riguarda soltanto l’espansione della libreria, ma soprattutto la sua integrazione all’interno dei processi quotidiani del team. Il Design System dovrebbe entrare nella sprint planning, avere tempo dedicato per manutenzione e documentazione ed essere supportato da update continui, feedback loop e momenti di condivisione interna. Quando il sistema viene mantenuto e comunicato correttamente, diventa uno strumento capace di semplificare lo sviluppo, aumentare la consistenza e accelerare l’evoluzione dell’intero ecosistema digitale.

Un’identità visiva efficace nasce da metodo, cultura del progetto e visione strategica.

Ogni logo che realizzo è il risultato di un’analisi attenta del contesto, dei valori e degli obiettivi del brand, seguita da una ricerca formale e concettuale mirata. Il design diventa così uno strumento di sintesi: essenziale, riconoscibile e coerente nel tempo.
Scopri alcuni dei miei lavori.