Touch Grass: un design system brutalista open source
- Categoria:
- Design di prodotto
- Ruolo:
- Autore del progetto (design e implementazione)
- Periodo:
- 2026
Per Touch Grass, sono partito da una direzione visiva per costruire componenti e token che potessi implementare e verificare. Il sistema collega CSS, Tailwind, Figma e JavaScript/TypeScript, con test e documentazione pubblica.
Fonte: il repository, i pacchetti pubblicati su npm e la verifica automatizzata del 14/04/2026. Repository (github.com) Si apre in una nuova schedaPacchetto React (npmjs.com) Si apre in una nuova schedaPacchetto di token (npmjs.com) Si apre in una nuova scheda

Sfida
Costruire un design system con un’identità visiva propria, token condivisi fra CSS, Tailwind, Figma e JS/TS, test e documentazione pubblica. La direzione visiva ha adottato angoli retti, tipografia in due famiglie (Geist Sans e Geist Mono) e vincoli espliciti per guidare l’implementazione.
Soluzione
Decisioni di design: angoli retti in tutti i componenti, due famiglie tipografiche, Geist Sans per il testo e Geist Mono per numeri, etichette e dati, e caricamento con un blocco di caratteri invece dello spinner. I token nascono da un'unica fonte JSON, e Style Dictionary genera variabili CSS, tema Tailwind, JSON per Figma e costanti JS/TS. La governance sta nel codice, con un test di contratto sul contrasto e un plugin ESLint dedicato. Per l'esecuzione ho usato Claude Code con uno spec breve, un piano per fasi, test prima del componente e revisione da parte di un agente separato. Le decisioni qui sopra sono rimaste mie.
Risultati
10 componenti di base e 9 pattern composti, 23 file di test e due workflow di CI. Nell'audit automatico del 14/04/2026 con axe-core, le 27 pagine di documentazione hanno avuto 0 violazioni e 687 controlli superati; il risultato vale per quell'esecuzione, in ambiente locale. I pacchetti @touch-grass-ds/react e @touch-grass-ds/tokens sono pubblicati su npm con licenza MIT. Limite: è un progetto personale, senza team che lo usano né metriche di adozione.
Galleria
Ritagli della documentazione pubblica, acquisiti a ottobre 2026.
Apprendimenti chiave
Quello che era scritto nella specifica, l'agente l'ha seguito, come il caricamento con un blocco di caratteri. Quello che non avevo scritto è emerso in revisione. L'agente revisore ha notato che il Button non impostava type="button" di default, e un clic dentro un form lo inviava.
Devi trasformare un problema di prodotto in un'esperienza implementabile?
Posso aiutarti a collegare strategia, interfaccia e ingegneria in un lavoro che resta chiaro dopo l'handoff.


