hunter soares

Busca

Cases, contato e CV

Contato↗
EN

Design system DilettaDesign system · celular e webleitura de 9 min

Uma marca nova em 3 dias, sem tocar em componente.

Dois apps no ar e um painel web, cada um com a sua marca, num design system só, e um jeito escrito de mudar esse sistema

Cliente
Diletta Solutions
Período
2021 a hoje
Papel
Arquitetura e código do sistema
Escopo
2 apps no ar · web · 51 peças

Sistema em produção. Product Designer na Diletta Solutions, empresa de software de Campinas, de novembro de 2021 até hoje, Sênior desde 2025.

Dois produtos, o mesmo design systemNas pontas, o mesmo produto no modo claro e no escuro. No meio, outro produto, com a marca dele. Os componentes são os mesmos nas três telas. Muda a lista de cores que cada um declara.
2
produtos no ar com marcas diferentes sobre o mesmo design system.Um terceiro está em construção.
55
cores são tudo que um produto novo declara para ter a própria marca.Nenhum componente muda.
2
plataformas sobre a mesma fonte: celular em Flutter e web em web components, com 51 peças.
3 dias
para o Conta Bold ganhar marca própria no sistema, em julho de 2026.Antes eram cerca de seis semanas.

00 Arquivo

Produto O design system que sustenta os aplicativos da Diletta
Produtos que consomem CPF Seguro, que protege a pessoa contra fraude no nome dela e foi a base do sistema, e Conta Bold, um banco digital · os dois no ar · e, desde outubro, o painel web da Flash Enterprise
Papel Product Designer, Sênior desde 2025 · Diletta Solutions · no Figma, os componentes foram divididos entre os designers; a ideia, a arquitetura e a execução do sistema foram minhas
Plataforma Flutter, iOS e Android · web, em web components
Ferramentas Figma, Flutter, web components, Git, Python, Claude Code
Escopo tudo além da minha parte dos componentes no Figma: especificações e contratos, cores, pacote de código, versões, catálogo, verificação e governança
Estado em 23/09/2026 versão 1.0.2, com 302 versões publicadas
Período novembro de 2021 até hoje

01 Resumo

Problema. Aplicativos com marcas diferentes, dois no ar e um terceiro a caminho, e um time pequeno. O caminho comum é copiar a biblioteca de componentes para cada um, e aí a correção feita numa cópia não chega nas outras.

Papel e time. No Figma, os componentes foram divididos entre os designers; a ideia, a arquitetura e a execução do sistema foram minhas. Isso inclui contratos, cores, pacote de código, versões, catálogo, verificação e governança. Cada aplicativo tem o seu time de engenharia, que decide quando adotar uma versão nova.

A decisão. Tirar a cor de dentro do componente. A marca virou uma lista de 55 cores que o produto declara, e o componente só sabe o uso: fundo, texto, erro.

Resultado. Quando o Conta Bold entrou no sistema, em julho de 2026, foram 3 dias do levantamento da paleta ao primeiro build. Pelo caminho antigo, de copiar a biblioteca, a minha conta dava seis semanas. Em julho, um aplicativo estava 176 versões atrás. Hoje o CPF Seguro está na atual e o Conta Bold, 5 atrás.

Estado. No ar nos dois aplicativos, versão 1.0.2 em 23/09/2026. Desde outubro roda também na web, no painel da Flash Enterprise.


02 Contexto

A Diletta vende software para outras empresas e tem produtos próprios, com nome, marca e público diferentes, atendidos pelo mesmo time de design e front-end. A pergunta era como fazer cada um parecer uma empresa sem manter uma biblioteca por produto. O sistema nasceu do CPF Seguro. O Conta Bold entrou em julho de 2026 como segundo produto, e o ciX, um produto de governo e o terceiro da fila, está em construção.

O sistema inteiro, em blocos1760×1604O sistema numa página: o design system em cima, o catálogo e o Figma no meio, os produtos embaixo, dois no ar e o ciX em construção. As versões na figura são as de 08/09/2026.

03 Restrição

Time pequeno. Não havia gente para manter um sistema por produto, nem como parar os produtos para refazer a base.

O aplicativo decide quando atualiza. O sistema chega como dependência com número de versão. Se subir quebra alguma tela, ninguém sobe. Quem consome tem veto, e eu acho isso saudável.

Marca de verdade. Cada produto precisa de identidade própria, e mudar o tom do mesmo azul não resolve.

Eu peço e eu julgo. Sou dono do sistema e desenho num dos produtos que usam ele. Várias decisões abaixo tiram esse julgamento da minha memória e colocam num arquivo.


04 O problema em número

Antes, ninguém sabia dizer se um componente estava pronto. Pronto no código não era pronto no Figma, e nenhum dos dois batia com a documentação.

A auditoria que eu rodei em julho mediu o preço disso num dos produtos: 176 versões publicadas desde a última que aquele aplicativo tinha adotado, sem uma linha escrita sobre o que mudou. Ninguém atualiza dependência sem saber o que vem dentro. O sistema tinha parado de chegar nos produtos porque faltava o registro.


05 O que existia antes

Em 2022 eu resolvi o mesmo problema à mão no Diletta Pay, a plataforma white-label que a Diletta vende para bancos: doze paletas, que são doze cores de marca possíveis num exemplo de aplicação, e vinte e quatro telas desenhadas uma a uma.

O jeito comum de tratar marca é o tema: o componente conhece as cores e os valores trocam por configuração. Funciona enquanto as marcas se parecem. Quando elas se afastam, alguém copia o componente para mudar, e a cópia nunca volta. Então mudei a pergunta para "como faço o componente nunca precisar saber a cor".


06 Decisões

D1 · A marca é uma lista de cores, e só

O produto declara 55 cores obrigatórias e 7 opcionais. Com elas o sistema calcula 59 cores de uso, nos dois modos: fundo, texto, erro, sucesso, superfície elevada. Nenhum componente conhece uma cor específica, só o uso dela.

Por quê: enquanto a cor mora no componente, cada marca nova mexe no componente. Com a cor do lado de fora, marca nova é preencher um formulário.

Medido: entre um produto e outro mudam essas 55 cores. Nenhuma alteração em componente ou em teste.

Conta Bold, modo claro
Conta Bold, modo escuro
A mesma tela do Conta Bold nos dois modos. Cada cor de uso tem um valor por modo, então o modo escuro saiu sem uma linha nova de componente.
A página de cor, o começo1800×984O começo da página de cor, gerada do código. Em cima, a mesma superfície no claro e no escuro. Embaixo, os cinco primeiros papéis, cada um com o valor nos dois modos e o contraste medido. É essa lista que um produto novo preenche.
A marca é uma lista de cores, e o resto não se mexeA cada troca de cliente ou de modo a tela muda de cor, e nenhum componente é reescrito. Gravado com os componentes reais da versão web do sistema.

D2 · Três camadas, e cada uma declara só o que é dela

Para dois produtos bastavam duas camadas: o design system em cima, o produto embaixo. A terceira apareceu quando o Conta Bold virou base de uma família de produtos. A base neutra e a identidade dele moravam no mesmo pacote, e todo produto novo da família nascia com a cara do Conta Bold.

A camada do meio declara estrutura e composição. Nunca declara valor que só a marca decide, como cor, tamanho de texto, imagem ou fonte. A primeira verificação que escrevi para essa regra procurava o nome da marca no código e deu zero, com treze tamanhos de texto do Conta Bold lá dentro. Tamanho de texto é número e não carrega nome. Hoje ela procura as duas coisas.

Abri mão de: um desenho mais simples. Duas camadas eram mais fáceis de explicar, e a terceira existe porque o negócio pediu.

Os três degraus, e quem declara o quê1760×1663As três camadas, com o que cada uma declara e o que nunca declara. Essa separação é o que faz um produto novo custar três dias em vez de seis semanas.

D3 · O que o produto esquece de declarar, um relatório mostra

Se o produto não declara uma cor, herda a do sistema. A tela fica errada e ninguém percebe. Por isso um relatório lista, por produto, o que foi declarado e o que foi herdado sem declarar.

Por quê: o modelo só é seguro se o esquecimento aparecer antes de alguém abrir a tela errada.

D4 · Componente aberto em vez de opção de configuração

Quando um produto precisa de um componente que o sistema não tem, ele monta com as partes do sistema, que são públicas. Uma superfície se divide em topo, conteúdo e base, e cada parte pode ser usada sozinha.

Por quê: configuração escondida é contrato que ninguém lê.

Abri mão de: controle sobre o resultado final de cada produto. Em troca, ninguém mais copia o sistema para alterar.

D5 · Pronto é medido em seis lugares

Um componente só está pronto quando bate em seis lugares: a especificação escrita, o código, o catálogo que o time consulta, o arquivo do Figma, a cor que ele mostra de fato em cada modo, e a comparação com o desenho que o produto fez. A verificação devolve número.

Medido: o CPF Seguro usa 85 componentes do sistema, e os 85 passam. Desses, 38 foram comparados com o desenho do produto. Nos outros 47 um dos lugares não se aplica, com o motivo escrito.

A especificação no centro1800×1666A especificação é o único lugar escrito à mão, e os outros cinco são medidos contra ela. Embaixo está o estado no CPF Seguro. Eu separo os 38 comparados com o desenho dos 47 em que um lugar não se aplica, porque somar os dois dá um verde que não prova nada.

D6 · Pedido de produto vira arquivo com resposta escrita

Quando um produto precisa de algo que o sistema não tem, ele escreve um pedido num formato fixo. O pedido entra num registro com a resposta, o motivo e a versão em que entrou. Hoje são 196 linhas.

Uma variante só sobe para o sistema no segundo pedido. Dois times pedindo a mesma coisa quer dizer que falta algo no sistema. Um time só quer dizer que falta algo no produto dele.

Por quê: sem o registro do primeiro pedido, a regra do segundo nunca dispara.

Abri mão de: velocidade. Escrever a resposta demora mais que responder no chat.

Duas linhas do registro de pedidos1800×1468Duas das linhas do registro, com as colunas de sempre. Na de cima, um produto prova que eu tinha anunciado uma validação que não existia. Na de baixo, o primeiro pedido de um seletor de conta fica anotado e espera o segundo.

D7 · A mesma mudança vale em qualquer plataforma

A Diletta também tem painel de operação e internet banking, os dois na web. Uma mudança num componente do sistema tem que poder ser adotada em qualquer produto, em qualquer plataforma, do mesmo jeito.

Medido: as 93 cores de base já saem para web, como 162 variáveis de CSS. As 59 cores de uso ainda só existem em Flutter, e esse buraco está escrito na decisão.

Como medi o passo: contei o painel de operação antes de propor prazo. São 3.746 componentes no Figma, 2.689 visíveis, contados pelo identificador do componente. Pelo nome da camada o número inflava quase 30%.

D8 · A máquina colhe e mede, e quem decide sou eu

Em agosto surgiu a ideia de dividir a verificação entre agentes de inteligência artificial para ir mais rápido. Cronometrei antes: as quatorze verificações que bloqueiam uma versão levam 15,2 segundos. O tempo estava no julgamento, e cada divergência que eu leio muda a pergunta da próxima.

Dividi por direito de escrita. Um agente colhe fatos e não conclui nada. Outro mede, e só entra em uso depois de ficar vermelho diante de um defeito plantado. Publicar, subir versão e adotar no aplicativo continuam sendo decisão de pessoa.

Abri mão de: a velocidade prometida. A verificação completa segue em cinco minutos, e eu escrevi isso no documento.

Medido: em quatro dias, 11 de 88 entregas de código (12,5%) corrigiam uma medição minha errada. Nenhuma eu peguei relendo.

O que cada um tem direito de escrever1800×1737Quem pode escrever o quê. As quatro ações sem volta ficam embaixo, e nenhuma é automática.

07 Craft

O catálogo · a aba de valores1800×1369O catálogo que o time consulta, rodando no navegador. Cada cor de uso aparece nos dois modos, com o contraste medido e de onde o valor vem.

carregando as peças do sistema…

Tela
Cor da marca
Modo
o que a marca declarou
--cps-primary: #003BE0
data-theme:    light
tela:          aplicativo
A declaração, ao vivoDuas telas reais, refeitas com as medidas do Figma e os componentes da versão web do sistema, na versão 0.180.0. Trocar a cor da marca muda a primária e as oito que saem dela. A ilustração não acompanha, porque arte de marca é do produto.
Button · tipo por estado1800×1312Três dos oito tipos, no tamanho grande, com os quatro estados e a versão de erro. O botão inteiro tem quatro eixos e 192 combinações, todas com cor vinda do sistema. As alturas são 32, 40 e 56, e o raio é sempre metade da altura.

Na versão 0.175.0 o sistema tinha 128 contratos escritos, um por componente ou parte de componente. O CPF Seguro usa 85 deles. Cada tela tem teste que compara a imagem pixel a pixel com a versão aprovada.

A tela que o teste guarda393×852A tela Meu cadastro do CPF Seguro, do jeito que o teste guarda. Ela é montada a partir da especificação escrita da tela. Se uma versão nova do sistema mudar um pixel dela, o teste falha.

08 Resultado

Produto novo em 3 dias. Contei quando o Conta Bold entrou no sistema, em julho de 2026: 3 dias do levantamento da paleta ao primeiro build. Uma sessão para levantar a paleta, uma para declarar as cores e conferir contraste, uma para o build. Pelo caminho antigo eram seis semanas, pela minha leitura do histórico. Os 4 dias do Diletta Pay são outra coisa: em 2022, marca nova na plataforma antiga.

A atualização que ninguém viu. O sistema pulou treze versões de uma vez, com 1.022 arquivos alterados. No aplicativo, as 24 imagens de tela ficaram idênticas e os 2.062 testes passaram.

A circulação. 302 versões publicadas até 23/09/2026, cada uma com registro de mudança. Em julho um aplicativo estava 176 versões atrás. Hoje o CPF Seguro está na atual e o Conta Bold, 5 atrás. O Conta Bold escolhe quando sobe, então esse número mexe de um dia para o outro. Prefiro mostrar essa distância a contar 128 contratos, porque é ela que diz se o sistema está sendo usado.

A web. Em outubro o sistema ganhou uma segunda saída: as mesmas cores, tipos e componentes publicados como web components, hoje 51 peças. O painel da Flash Enterprise trocou o Ant Design por elas em uma semana. Um defeito corrigido no sistema chega no aplicativo e no painel na mesma versão.

A verificação. Na comparação de cor entre o desenho do CPF Seguro e o sistema, 33 pares batem e 29 divergem. Em 22 dessas dá para ler qual cor deveria estar ali e qual está.


09 O que eu faria diferente

Testaria o medidor antes de publicar a medida. O programa que contava componentes prontos pulava em silêncio o que não sabia classificar. O primeiro total que publiquei saiu bonito e errado.

Testaria a pergunta certa. Tenho vinte casos anotados de verificação que errou: verde sobre defeito, ou vermelha sem defeito. No primeiro, ela olhava a cor declarada no componente quando a pergunta era a cor do pixel. Azul com 18% de opacidade não é azul cheio. Hoje eu escrevo o caso de defeito antes da verificação.

Escreveria o registro de mudanças antes de precisar dele. As 176 versões sem explicação eram o motivo de o sistema ter parado de chegar nos produtos.


  • design systems✦
  • product design✦
  • fintech✦
  • ia no processo✦
  • multimarca✦
  • acessibilidade✦
  • pesquisa✦