﻿﻿{"id":2005,"date":"2026-01-06T09:30:00","date_gmt":"2026-01-06T08:30:00","guid":{"rendered":"https:\/\/elearningsamba.com\/index.php\/dembrandt-aspirez-le-design-system-de-nimporte-quel-site-en-une-commande\/"},"modified":"2026-01-06T09:30:00","modified_gmt":"2026-01-06T08:30:00","slug":"dembrandt-aspirez-le-design-system-de-nimporte-quel-site-en-une-commande","status":"publish","type":"page","link":"https:\/\/elearningsamba.com\/index.php\/dembrandt-aspirez-le-design-system-de-nimporte-quel-site-en-une-commande\/","title":{"rendered":"Dembrandt &#8211; Aspirez le design system de n&#8217;importe quel site en une commande"},"content":{"rendered":"<p>Vous bossez sur un projet et vous vous dites &#8220;Tiens, le site de [ins\u00e9rez ici une grosse bo\u00eete] a un design plut\u00f4t bien foutu, j&#8217;aimerais bien voir comment ils ont structur\u00e9 leurs css&#8221;.<\/p>\n<p>H\u00e9 bien y&#8217;a un outil pour \u00e7a, et il s&#8217;appelle <strong><br \/>\n<a href=\"https:\/\/www.dembrandt.com\/\">Dembrandt<\/a><br \/>\n<\/strong>.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/korben.info\/cdn-cgi\/image\/width=1200,fit=scale-down,quality=90,f=avif\/dembrandt-extraction-design-system-cli\/dembrandt-extraction-design-system-cli-2.png\" alt=\"\" loading=\"lazy\"><\/p>\n<p><em>Dembrandt en action<\/em><\/p>\n<p>En gros, c&#8217;est un petit outil en ligne de commande qui va analyser n&#8217;importe quelle URL et en extraire tout le design system : les couleurs (primaires, secondaires, variables CSS), la typographie (familles, tailles, graisses), les espacements, les bordures, les ombres et m\u00eame les patterns de composants UI.<\/p>\n<p>Le truc s&#8217;installe en une ligne avec npm (<code>npm install -g dembrandt<\/code>) et apr\u00e8s vous avez juste \u00e0 taper <code>dembrandt stripe.com<\/code> par exemple. En moins d&#8217;une seconde, l&#8217;outil va alors faire un rendu de la page avec Playwright, analyser le DOM, d\u00e9tecter les styles et vous ressort tout \u00e7a bien structur\u00e9 avec des scores de confiance pour chaque couleur.<\/p>\n<p>Ce que j&#8217;aime bien, c&#8217;est que \u00e7a exporte directement en JSON ou au format W3C Design Tokens si vous voulez l&#8217;utiliser avec Style Dictionary. Pratique pour alimenter votre propre design system ou pour documenter celui d&#8217;un client qui n&#8217;a jamais pris le temps de le faire&#8230; (il en faut)<\/p>\n<p>Y&#8217;a aussi quelques options sympas comme <code>--dark-mode<\/code> pour extraire la palette sombre, <code>--mobile<\/code> pour simuler un viewport iPhone, ou <code>--browser=firefox<\/code> si le site que vous voulez analyser a des protections Cloudflare qui bloquent Chromium.<\/p>\n<p>Bon, \u00e7a marche pas sur les sites qui utilisent Canvas ou WebGL pour le rendu, et faut pas s&#8217;attendre \u00e0 des miracles<br \/>\n<a href=\"https:\/\/neodelta.eu\/glossaire\/spa\">sur les SPA<\/a><br \/>\nqui chargent tout en async. Mais pour la majorit\u00e9 des sites, c&#8217;est vraiment efficace.<\/p>\n<p>Le projet est open source sous licence MIT, donc vous pouvez l&#8217;auditer, le forker, le modifier comme bon vous semble. Et niveau l\u00e9galit\u00e9, analyser du HTML\/CSS public pour de la veille concurrentielle ou de la documentation, c&#8217;est consid\u00e9r\u00e9 comme du fair use dans la plupart des juridictions, donc vous \u00eates good !<\/p>\n<p>Bref, si vous faites du design system, de l&#8217;audit UX ou juste de la veille sur ce que font les autres, c&#8217;est un outil \u00e0 garder sous le coude.<\/p>\n<p>Merci \u00e0 Lorenper pour le partage !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vous bossez sur un projet et vous vous dites &#8220;Tiens, le site de [ins\u00e9rez ici une grosse bo\u00eete] a un design plut\u00f4t bien foutu, j&#8217;aimerais bien voir comment ils ont structur\u00e9 leurs css&#8221;. H\u00e9 bien y&#8217;a un outil pour \u00e7a, et il s&#8217;appelle Dembrandt . Dembrandt en action En gros, c&#8217;est un petit outil en ligne de commande qui va analyser n&#8217;importe quelle URL et en extraire tout le design system : les couleurs (primaires, secondaires, variables CSS), la typographie (familles, tailles, graisses), les espacements, les bordures, les ombres et m\u00eame les patterns de composants UI. Le truc s&#8217;installe en une ligne avec npm (npm install -g dembrandt) et apr\u00e8s vous avez juste \u00e0 taper dembrandt stripe.com par exemple. En moins d&#8217;une seconde, l&#8217;outil va alors faire un rendu de la page avec Playwright, analyser le DOM, d\u00e9tecter les styles et vous ressort tout \u00e7a bien structur\u00e9 avec des scores de confiance pour chaque couleur. Ce que j&#8217;aime bien, c&#8217;est que \u00e7a exporte directement en JSON ou au format W3C Design Tokens si vous voulez l&#8217;utiliser avec Style Dictionary. Pratique pour alimenter votre propre design system ou pour documenter celui d&#8217;un client qui n&#8217;a jamais pris le temps de le faire&#8230; (il en faut) Y&#8217;a aussi quelques options sympas comme &#8211;dark-mode pour extraire la palette sombre, &#8211;mobile pour simuler un viewport iPhone, ou &#8211;browser=firefox si le site que vous voulez analyser a des protections Cloudflare qui bloquent Chromium. Bon, \u00e7a marche pas sur les sites qui utilisent Canvas ou WebGL pour le rendu, et faut pas s&#8217;attendre \u00e0 des miracles sur les SPA qui chargent tout en async. Mais pour la majorit\u00e9 des sites, c&#8217;est vraiment efficace. Le projet est open source sous licence MIT, donc vous pouvez l&#8217;auditer, le forker, le modifier comme bon vous semble. Et niveau l\u00e9galit\u00e9, analyser du HTML\/CSS public pour de la veille concurrentielle ou de la documentation, c&#8217;est consid\u00e9r\u00e9 comme du fair use dans la plupart des juridictions, donc vous \u00eates good ! Bref, si vous faites du design system, de l&#8217;audit UX ou juste de la veille sur ce que font les autres, c&#8217;est un outil \u00e0 garder sous le coude. Merci \u00e0 Lorenper pour le partage !<\/p>\n","protected":false},"author":1,"featured_media":2006,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"give_campaign_id":0,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_kadence_starter_templates_imported_post":false,"footnotes":""},"class_list":["post-2005","page","type-page","status-publish","has-post-thumbnail","hentry"],"campaignId":"","_links":{"self":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2005","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/comments?post=2005"}],"version-history":[{"count":0,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/pages\/2005\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media\/2006"}],"wp:attachment":[{"href":"https:\/\/elearningsamba.com\/index.php\/wp-json\/wp\/v2\/media?parent=2005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}