Fluxo de trabalho UI/UX: do protótipo à implementação no código

Capítulo 14

Tempo estimado de leitura: 8 minutos

+ Exercício

O que é um fluxo de trabalho UI/UX “do protótipo ao código”

Para quem desenvolve apps, um bom fluxo UI/UX não é um conjunto de arquivos bonitos: é uma sequência de decisões que vira requisitos implementáveis. A ideia é reduzir ambiguidades entre “o que foi desenhado” e “o que foi entregue”, criando checkpoints claros: rascunho → wireframe → protótipo navegável → especificação mínima → implementação. Em cada etapa, você transforma intenções (ex.: “botão precisa chamar atenção”) em definições objetivas (ex.: cor, tamanho, estados, comportamento, espaçamentos, regras de responsividade).

Visão geral do pipeline (com entregáveis)

EtapaObjetivoEntregávelCritério de pronto
RascunhoExplorar soluções rapidamenteEsboços simplesFluxo principal definido sem detalhes visuais
WireframeEstruturar layout e conteúdoTelas em baixa fidelidadeComponentes e hierarquia de informação estabilizados
Protótipo navegávelValidar navegação e interaçõesProtótipo clicávelFluxos críticos testáveis ponta a ponta
Especificação mínimaTraduzir design em requisitos de UITokens + componentes + estados + medidasDev consegue implementar sem “adivinhar”
ImplementaçãoConstruir UI com paridadeCódigo + revisão visualParidade design vs app validada e iterada

1) Rascunho: transformar intenção em decisões

No rascunho, foque em alternativas e em regras (o que acontece quando o usuário toca, erra, volta, cancela). Evite discutir cores e detalhes finos aqui; o objetivo é reduzir o risco de construir o fluxo errado.

Checklist prático do rascunho

  • Fluxo principal: quais telas e em que ordem?
  • Pontos de decisão: onde o usuário escolhe algo?
  • Saídas: cancelar, voltar, fechar, salvar rascunho.
  • Erros previsíveis: validação de formulário, falha de rede, permissões.

Como já pensar “pronto para código”

Mesmo no rascunho, anote regras em frases curtas que depois viram requisitos:

  • “Botão Continuar fica desabilitado até todos os campos obrigatórios estarem válidos.”
  • “Ao tocar em Salvar, mostrar loading no botão e bloquear múltiplos envios.”
  • “Se falhar, manter dados preenchidos e mostrar mensagem abaixo do campo.”

2) Wireframe: mapear componentes e comportamento

O wireframe é onde você decide o que é componente e quais estados ele precisa. Para desenvolvedores, isso é ouro: ajuda a construir uma biblioteca de componentes reutilizáveis e reduzir retrabalho.

Passo a passo do wireframe (orientado a dev)

  • Nomeie blocos como componentes: “AppBar”, “CardProduto”, “InputEmail”, “PrimaryButton”.
  • Marque estados por tela: padrão, carregando, vazio, erro, sucesso (e variações específicas).
  • Defina regras de layout: o que é fixo, o que rola, o que é sticky.
  • Liste dependências: dados necessários para renderizar (ex.: nome, preço, imagem, status).

Exemplo de anotação de wireframe (vira backlog)

Tela: Checkout - Endereço
Componentes:
- AddressCard (selecionável)
- AddAddressButton
- PrimaryButton (Continuar)
Regras:
- PrimaryButton desabilitado se nenhum endereço selecionado
- AddressCard mostra estado selecionado (borda + ícone)
- Lista rola; botão fica fixo no rodapé

3) Protótipo navegável: validar interações antes do código

O protótipo navegável serve para testar fluxo e microinterações sem custo de implementação. Aqui você confirma se a sequência faz sentido e se o usuário entende o que acontece após cada ação.

Continue em nosso aplicativo e ...
  • Ouça o áudio com a tela desligada
  • Ganhe Certificado após a conclusão
  • + de 5000 cursos para você explorar!
ou continue lendo abaixo...
Download App

Baixar o aplicativo

O que prototipar (prioridade para dev)

  • Fluxos críticos: cadastro, login, compra, criação/edição.
  • Interações com risco: confirmação, desfazer, exclusão.
  • Transições importantes: abrir modal, navegar, voltar, trocar abas.
  • Estados acionados por ação: loading no botão, erro inline, sucesso com retorno.

Como coletar feedback que vira requisito

Evite feedback genérico (“tá estranho”). Pergunte e registre de forma objetiva:

  • “Em qual momento você esperava ver confirmação?”
  • “Você percebeu que o botão estava desabilitado? Por quê?”
  • “O que você acha que acontece ao tocar em ‘Remover’?”

Depois traduza em ações: “Adicionar confirmação antes de remover”, “Adicionar texto de ajuda quando desabilitado”, “Tornar estado selecionado mais evidente”.

4) Especificação mínima: o pacote que permite implementar sem adivinhação

Especificação mínima não é um documento gigante. É um conjunto enxuto de definições que conecta design e código: tokens (valores), componentes (estrutura), estados (variações) e comportamento (regras).

4.1 Traduzindo decisões de design em requisitos de UI

Decisão de designComo vira requisitoExemplo
“Botão principal deve ser destacado”Token de cor + altura + raio + estadosPrimaryButton: height 48, radius 12, bg primary-600, disabled bg neutral-200
“Cards devem parecer clicáveis”Sombra/elevação + estado pressionadoCard: shadow sm; pressed: opacity 0.92
“Inputs precisam indicar erro claramente”Estado error + mensagem + ícone opcionalTextField.error: border danger-600, helperText danger-700
“Lista deve ser escaneável”Espaçamentos + alinhamentos + truncamentoItem: padding 16; title 1 linha; subtitle 2 linhas ellipsis

4.2 Tokens: como definir fontes, cores e medidas para o projeto

Tokens são variáveis de design que você usa no código para manter consistência e facilitar ajustes. O ideal é que o design e o app compartilhem os mesmos nomes e valores.

Exemplo de tokens (formato genérico)

// Cores (exemplo)
color.primary.600 = #2563EB
color.primary.700 = #1D4ED8
color.neutral.0   = #FFFFFF
color.neutral.900 = #111827
color.danger.600  = #DC2626

// Tipografia (exemplo)
font.family.base = "Inter"
font.size.body   = 16
font.size.caption= 12
font.weight.regular = 400
font.weight.semibold= 600

// Espaçamento e raio
space.1 = 4
space.2 = 8
space.3 = 12
space.4 = 16
radius.sm = 8
radius.md = 12

// Sombra (exemplo)
shadow.sm = 0 1 2 rgba(0,0,0,0.08)
shadow.md = 0 6 16 rgba(0,0,0,0.12)

Regra prática: prefira uma escala (4, 8, 12, 16...) em vez de valores soltos. Isso reduz “quebras” visuais e acelera decisões.

4.3 Componentes: estrutura, propriedades e estados

Para cada componente relevante, documente: anatomia (partes), props (o que varia), estados (como muda) e regras (quando usar).

Modelo de especificação mínima de componente

Componente: PrimaryButton
Anatomia: container, label, optionalLeadingIcon
Props:
- label: string
- icon: optional
- size: md | lg
- fullWidth: boolean
- intent: primary | danger (se aplicável)
Estados:
- default
- pressed
- disabled
- loading (mostra spinner e bloqueia toque)
Medidas:
- height: 48 (md) / 56 (lg)
- paddingX: 16
- radius: radius.md
- gap icon-label: 8
Cores:
- default bg: color.primary.600; text: color.neutral.0
- pressed bg: color.primary.700
- disabled bg: color.neutral.200; text: color.neutral.500
Comportamento:
- onPress não dispara em disabled/loading
- loading mantém largura (não “pula”)

4.4 Como comunicar medidas (margens, tamanhos, raios, sombras)

Medidas precisam ser comunicadas de forma que o dev consiga reproduzir sem “olhômetro”. Use sempre: unidade, referência e contexto.

  • Margens e padding: informe por lado quando necessário (ex.: padding 16 horizontal, 12 vertical).
  • Tamanhos: altura mínima de botões/inputs, tamanho de ícones, largura de cards (se fixa) ou regras (se responsiva).
  • Raios: use tokens (radius.sm/md) e diga onde aplica (container, imagem, chip).
  • Sombras: defina como token (shadow.sm/md) e quando usar (cards, modais, app bar).

Exemplo de especificação de layout de tela

Tela: Detalhe do Produto
Layout:
- Padding da tela: 16
- Espaço entre seções: 24
- Imagem: altura 240, radius 12
- Título: marginTop 16
- Preço: marginTop 8
- Botão Comprar: fixo no rodapé
  - container padding: 16
  - botão height: 56, fullWidth
Sombra:
- Rodapé: shadow.sm

5) Implementação: do design system mínimo ao código

Na implementação, o objetivo é construir com base em tokens e componentes, evitando estilos “inline” repetidos. Isso melhora consistência e facilita manter paridade com o design quando houver mudanças.

Passo a passo prático de implementação

  • 1) Criar tokens no código: cores, tipografia, espaçamentos, raios, sombras.
  • 2) Implementar componentes base: Button, TextField, Card, AppBar, etc., com estados.
  • 3) Montar telas usando componentes: sem reinventar estilos por tela.
  • 4) Implementar comportamento: validações, loading, desabilitado, feedback de erro.
  • 5) Revisar paridade: comparar com design e ajustar tokens/props (não “gambiarras” por tela).

Exemplo de mapeamento: especificação → implementação

EspecificaçãoDecisão de código
space.4 = 16Constante/variável de espaçamento usada em paddings/margens
PrimaryButton height 48/56Componente com prop size que altera height
TextField.error muda borda e helperTextEstado controlado por prop error + mensagem
shadow.sm para cardsEstilo reutilizável aplicado em Card

Validação de paridade (design vs app) com revisões iterativas

Paridade não é “ficou parecido”; é bater critérios verificáveis. Faça revisões curtas e frequentes, preferindo ajustar tokens e componentes para corrigir várias telas de uma vez.

Ritual de revisão em ciclos curtos

  • Checkpoint A (componentes): validar Button, TextField, Card, AppBar em uma tela “playground”.
  • Checkpoint B (tela): validar uma tela completa com todos os estados relevantes.
  • Checkpoint C (fluxo): validar navegação e transições do fluxo crítico ponta a ponta.

Como revisar de forma objetiva

  • Medidas: padding, alturas, raios e gaps batem com a escala definida?
  • Tipografia: tamanhos/pesos correspondem aos tokens? Há inconsistência entre telas?
  • Cores: estados (pressed/disabled/error) estão corretos e consistentes?
  • Comportamento: loading bloqueia ação? Erro mantém dados? Foco/seleção está claro?
  • Layout: elementos fixos/roláveis se comportam como especificado?

Registro de ajustes (para evitar retrabalho)

Ao encontrar divergências, registre como mudança de token ou de componente sempre que possível:

  • “Aumentar radius.md de 10 para 12” (impacta tudo de forma consistente).
  • “PrimaryButton pressed está escurecendo demais: ajustar color.primary.700” (token).
  • “TextField helperText precisa de marginTop 4” (componente).

Checklist final da especificação mínima (para você usar em qualquer tela)

  • Tela: padding, espaçamento entre seções, o que é fixo vs rolável.
  • Componentes: lista de componentes usados e variações.
  • Estados: default/pressed/disabled/loading + estados de erro/sucesso específicos.
  • Tokens: cores, tipografia, espaço, raio, sombra (com nomes e valores).
  • Comportamento: regras de habilitar/desabilitar, validação, feedback, navegação.
  • Paridade: itens verificáveis para revisão (medidas, cores, tipografia, layout, interação).

Agora responda o exercício sobre o conteúdo:

Qual prática melhor reduz ambiguidades entre o design e o que será implementado no app em um fluxo “do protótipo ao código”?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

A ambiguidade diminui quando decisões viram definições implementáveis: tokens, componentes, estados, medidas e regras de comportamento, seguindo checkpoints (rascunho, wireframe, protótipo, especificação e implementação).

Próximo capitúlo

Checklist final de UI/UX para revisar telas antes de publicar o app

Arrow Right Icon
Capa do Ebook gratuito Design de Interfaces para Apps: UI/UX essencial para desenvolvedores iniciantes
93%

Design de Interfaces para Apps: UI/UX essencial para desenvolvedores iniciantes

Novo curso

15 páginas

Baixe o app para ganhar Certificação grátis e ouvir os cursos em background, mesmo com a tela desligada.