DESIGN SYSTEM - Desenvolvido em 2026

Quando tudo parece diferente,
nada parece confiável.

Identificação, documentação e resolução de um problema de inconsistência visual na Physis, plataforma usada por Petrobras, Comgás e EMAE, atualmente em processo de migração gradual de mais de 100 telas para o novo padrão visual. Identifiquei e resolvi um problema de inconsistência visual na Physis, usada por Petrobras, Comgás e EMAE.

Mockup de componentes do design system: heading, botões e cor primária

Mais de 10 desenvolvedores passaram a seguir os mesmos padrões, aumentando a consistência das entregas entre diferentes micro serviços. Mais de 10 devs passaram a seguir os mesmos padrões entre os micro serviços.

Novas funcionalidades passam a ser construídas sobre padrões já definidos, reduzindo decisões repetitivas entre design e desenvolvimento. Novas funcionalidades já nascem sobre padrões definidos, reduzindo decisões repetitivas.

As telas migradas conversam entre si, parecendo o mesmo produto. Os usuários encontram padrões familiares, reduzindo a necessidade de reaprender a interface em cada tela. Telas migradas parecem o mesmo produto — usuários não precisam reaprender a interface a cada tela.

O sistema desenvolvido cria as condições para reduzir o retrabalho e custos de manutenção à medida que a migração avança. O sistema reduz retrabalho e custo de manutenção à medida que a migração avança.

A Physis é uma plataforma de gestão de ativos industriais utilizada por clientes como Petrobras, Comgás e EMAE. Com mais de 20 micro serviços evoluindo ao longo dos anos, foi identificado que cada micro serviço havia desenvolvido sua própria interpretação da linguagem visual. Componentes equivalentes apresentavam diferenças de aparência e comportamento, tornando a experiência menos previsível para os usuários e a evolução do produto mais custosa para a empresa. A Physis tem mais de 20 micro serviços, cada um com sua própria interpretação visual.

Tela do Supervisório MonitorIoT com árvore de monitoramentos, um dos três sistemas com aparência inconsistente Tela inicial de aplicações do Physis, com visual claramente diferente do Supervisório MonitorIoT Dashboard do microsserviço Jano, com um terceiro padrão visual distinto dos anteriores

O produto cresceu sem um ecossistema visual

As inconsistências encontradas foram documentadas e foi proposto a criação de um Design System para unificar padrões, reduzir divergências e apoiar a evolução do produto em escala. A aprovação não foi imediata e exigiu alinhamento gradual com o time e a liderança. Documentei as inconsistências e propus um Design System pra unificar os padrões da plataforma.

Produto

Physis, gestão de ativos industriais

Clientes

Petrobras, Comgás, EMAE e outros

Escala

+10 stakeholders, +20 microserviços

Situação

Padrões visuais inconsistentes

Ninguém decidiu ter um produto inconsistente. As exceções foram se acumulando pouco a pouco, até que a plataforma perdeu uma linguagem comum, reduzindo a fluidez das interações e multiplicando o trabalho necessário para corrigir, testar e evoluir um mesmo componente. Ninguém decidiu ser inconsistente — as exceções se acumularam até a plataforma perder uma linguagem comum.

Sem escala de cores

Cada micro serviço seguia seu próprio padrão. Um simples ajuste de contraste gerava novas cores dependendo de quem implementava. No fim, variáveis como BlueNavy já nem eram mais azuis. Cada micro serviço seguia seu próprio padrão — nomes como BlueNavy nem eram mais azuis.

Comparação de cores usadas em três interfaces diferentes

Ícones diferentes para o mesmo uso

Cada micro serviço seguia seu próprio padrão. Um simples ajuste de contraste gerava novas cores dependendo de quem implementava. No fim, variáveis como BlueNavy já nem eram mais azuis. Cada micro serviço seguia seu próprio padrão — nomes como BlueNavy nem eram mais azuis.

Ícones diferentes usados para a mesma função em três interfaces

Tipografia sem critério

Sem padrões tipográficos compartilhados, cada tela comunicava prioridades diferentes. O que deveria chamava atenção em uma área parececia secundário em outra enfraquecendo a hierarquia visual e tornando a leitura menos eficiente. Sem padrões tipográficos, cada tela tinha prioridades visuais diferentes.

Tabela comparando família, tamanho e peso tipográfico entre microserviços

Espaçamentos e bordas livres

Sem um múltiplo base, cada componente possuía valores definidos individualmente, o que reduzia a reutilização e tornava a evolução da interface mais lenta. Sem um múltiplo base, cada componente tinha valores próprios — menos reutilização e evolução mais lenta.

Botões com espaçamentos internos diferentes entre microserviços

Campos de entrada sem padrão

O elemento mais recorrente da interface era o mais inconsistente. Tamanhos, bordas e estados variavam por tela, reduzindo a fluidez das interações e multiplicando o trabalho necessário para utiliza-los. O elemento mais usado era o mais inconsistente — tamanhos, bordas e estados variavam a cada tela.

Campos de entrada de e-mail com estilos diferentes entre microserviços

Antes de criar os componentes, definimos as regras que estruturariam o sistema. Analisamos as interfaces existentes para identificar padrões e transformamos essas decisões em tokens, facilitando a manutenção e evolução da plataforma. Assim, uma alteração em um token é refletida automaticamente em todos os componentes que o utilizam, sem ajustes manuais. Definimos as regras do sistema em tokens — mudar um token atualiza todos os componentes automaticamente.

Escala de cores

Criada uma escala tonal completa com nomes semânticos. Se a cor mudar, o nome continua fazendo sentido. Isso resolveu o problema de variáveis como BlueNavy que já tinham virado outra cor. Criei uma escala tonal com nomes semânticos — se a cor mudar, o nome continua fazendo sentido.

Neutral dark

Color-01

#252E3F

Color-02

#2F3A4F

Color-03

#3A465E

Color-04

#47546E

Color-05

#5F6D86

Color-06

#8A96AA

Color-07

#C2CAD6

Theme mapping

Além da escala, foi feito o theme mapping: cada token passou a corresponder a um contexto, claro ou escuro. Antes, a troca de tema era feita manualmente pelos devs. Com o mapping, isso passará a ser automático. Também criei o theme mapping: cada token corresponde a um contexto claro ou escuro, tornando a troca de tema automática.

Light

Color-01

#FAFBFC

Dark

Color-01

#252E3F

Ícones

Uma biblioteca única definida para toda a plataforma, usada via SVG. Acabando com a variação de estilo de ícones entre interfaces.

Biblioteca de ícones padronizada em SVG: limpar, pesquisar, reiniciar, editar e adicionar

Tipografia

Variáveis de tipo com família, tamanho, peso, line-height, letter-spacing e paragraph-spacing fixos. Sentence case padronizado em todos os títulos, encerrando a variação entre telas. Variáveis de tipo fixas (família, tamanho, peso, espaçamento) e sentence case padronizado em todos os títulos.

Font Family Size Weight Line-height Letter-spac. Para.-spac.
Poppins 16px 500 24px 0px 12px

Espaçamentos e raio de canto

Múltiplos de 4 como base em todo o sistema. Um critério simples que elimina valores soltos e sem relação entre si, e facilita o desenvolvimento. Múltiplos de 4 como base — um critério simples que elimina valores soltos e facilita o desenvolvimento.

TokenValueUsage
radius-00pxNão possui arredondamento
radius-14pxArredondamento padrão
radius-28pxArredondamento para seções maiores

Botões

Três hierarquias definidas: primário, secundário e terciário. A cor azul foi mantida em todos os casos para que o usuário nunca se confunda sobre o que é clicável. Três hierarquias — primário, secundário, terciário — sempre na mesma cor, pra nunca confundir o que é clicável.

Botões primário, secundário e terciário em diferentes estados

Campos de entrada

Os elementos foram padronizado, com variações, estados e comportamentos definidos.

Campos de entrada de e-mail padronizados

Documentação

Todas as escolhas e regras do design system foram documentadas para garantir consistência visual, reduzir o tempo de criação de novas telas e facilitar a comunicação de stakholders. Documentei todas as regras do sistema pra garantir consistência e agilizar a criação de novas telas.

Página de documentação do design system

Com o sistema criado, o próximo passo era aplicá-lo. Telas novas já nasciam usando os componentes. As antigas precisavam ser reconstruídas. O desafio era que poucas das telas existentes tinha sido construída com componentes, não havia como trocar uma instância e atualizar facilmente. A ideia é que a migração ocorrá nos intervalos entre outras demandas, as telas vão sendo reconstruídas uma a uma. Telas novas já nascem com os componentes; as antigas são reconstruídas aos poucos.

Dashboard em modo light já migrado para o novo padrão

As telas que passaram pelo processo conversam entre si e parecem parte do mesmo produto, gerando mais confiança para o usuário, afinal, quando tudo parece diferente, nada parece confiável. As telas migradas conversam entre si e parecem parte do mesmo produto, gerando mais confiança pro usuário.

Interfaces não migradas

Tela inicial de aplicações do Physis, ainda não migrada
Tela de câmeras IP do Gerência | Conexão, ainda não migrada
Tela do Supervisório MonitorIoT com árvore de monitoramentos, ainda não migrada
Tela inicial de aplicações do Physis, em modo escuro, ainda não migrada
Tela de câmeras IP do Gerência | Conexão, em modo escuro, ainda não migrada
Tela do Supervisório MonitorIoT em modo escuro, ainda não migrada

Interfaces migradas

Dashboard do microsserviço Jano já migrado para o novo padrão visual, em modo escuro
Tela de estatísticas do Gerência | Conexão Apps Mobile já migrada, em modo escuro
Tela de Rotas e Manchas já migrada, em modo escuro
Dashboard do microsserviço Jano já migrado para o novo padrão visual, em modo claro
Tela de estatísticas do Gerência | Conexão Apps Mobile já migrada, em modo claro
Tela de Rotas e Manchas já migrada, em modo claro

Entender antes de propor

As inconsistências eram apenas o sintoma. O problema real era a falta de recursos compartilhados entre os micro serviços. Atacar a causa importa mais do que corrigir o sintoma. As inconsistências eram só o sintoma — faltavam recursos compartilhados.

Sistema bom não se sustenta sozinho

Criar o Design System foi só o começo. Mantê-lo atualizado, migrar as telas antigas e garantir que ele continue fazendo sentido conforme o produto evolui é um trabalho contínuo. Criar o Design System foi só o começo — mantê-lo atualizado é trabalho contínuo.

Nomes importam mais do que parecem

Uma variável chamada BlueNavy que já tinha virado bege é um problema real de manutenção. Nomear por intenção, não por aparência, foi uma das decisões com mais impacto prático. BlueNavy virar bege é um problema real — nomear por intenção teve o maior impacto prático.

Nem toda decisão é sua

Houveram decisão vieram de instâncias superiores. Aprendi que defender uma escolha faz parte do trabalho, mas também faz parte saber operar dentro das restrições que você não controla. Nem toda decisão foi minha. Aprendi a defender escolhas e operar dentro de restrições.

Obrigada por ler até aqui :)

Vamos conversar?

Gostou do meu trabalho? Estou aberta a oportunidades e adoraria conhecer novos desafios.