Contrato de dados gerado do design
O protótipo cospe o TypeScript que o dev pluga. Menos adivinhação entre design e código, mais decisão registrada onde ela importa.
Todo handoff começa com a mesma fricção: o design diz uma coisa, o código entende outra. O dev abre o Figma, mede padding no olho, adivinha o nome do estado, inventa o tipo do dado. Cada adivinhação é um bug futuro esperando a hora.
A ideia desse experimento foi simples: se o estado já existe no protótipo, por que digitar ele de novo no código? O contrato de dados devia sair do próprio design, pronto pra colar.
O problema com o handoff tradicional
Especificação em documento envelhece no dia seguinte. O design muda, a doc não acompanha, e o que sobra é a tela mais um monte de suposição. O dev vira tradutor de pixel pra tipo, e nessa tradução mora a maior parte do retrabalho.
O handoff não deveria ser uma tradução. Deveria ser um export.
O que eu montei
Liguei o protótipo a um passo que lê os estados de cada componente e gera o tipo correspondente em TypeScript. O que o designer decide na tela vira a fonte do contrato, não um anexo dele.
// gerado a partir dos estados do componente <ScoreRing/>
export type ScoreRing = {
value: number; // 0–100, score atual
delta: number; // variação vs período anterior
trend: 'up' | 'flat' | 'down';
status: 'alto' | 'medio' | 'baixo';
};
O dev importa o tipo e pluga. Se o design adiciona um estado novo, o tipo muda junto, e o TypeScript reclama exatamente onde precisa de atenção. A decisão fica registrada no único lugar que os dois lados leem.
O que mudou na prática
- Menos ida e volta sobre "qual é o estado quando o valor é zero".
- O contrato não desatualiza, porque ele nasce do design, não ao lado dele.
- O dev gasta tempo no comportamento, não em decifrar a tela.
Não é mágica nem substitui conversa. É só tirar a adivinhação do caminho e deixar a decisão onde ela já estava: na tela. A IA acelera a geração; a decisão de produto continua minha.
// Takeaway Quando o contrato sai do design, o handoff deixa de ser tradução e vira sincronização. Menos bug, menos reunião, mais decisão registrada.