Disco cheio não é drama de datacenter — é segunda-feira. PDFs baixados duas vezes, fotos copiadas de backup, vídeos repetidos em pastas de projeto. Eu queria ver o que era gêmeo, decidir com calma e mandar cópias para a Lixeira, sem ferramenta genérica que me assustasse ou exigisse confiança cega.

O Twice é a resposta modesta que construí para o meu Mac: Electron, React, varredura em worker e UI pensada no Figma. Este artigo conta o fluxo SDD + MCP Figma + conhecimento técnico que usei — e onde a IA entrou de forma intencional.

Fluxo Configurar → Escanear → Revisar (gravação local).

Tela de configuração do Twice no macOS: pastas, tipos de arquivo e ação Encontrar gêmeos.

Configuração de pastas, exceções e categorias (PDF, fotos, vídeos, capturas).

1. O incômodo real

O problema é corriqueiro: espaço some, mas a culpa está espalhada em duplicatas sem rosto. Ferramentas existentes ou são opacas, ou empurram ação em massa sem revisão. Meu critério era simples — escanear pastas que eu escolho, comparar conteúdo (PDF, imagem, vídeo), mostrar grupos de gêmeos e só então mover cópias selecionadas para a Lixeira.

Isso já define restrições de produto: permissões no macOS, feedback de progresso honesto, pausa/cancelamento, telas de revisão antes de apagar nada. Nada disso pede “mais IA”; pede engenharia clara.

2. Spec antes do Electron

Antes de abrir o scaffold do Electron, escrevi o que o app deveria fazer em blocos verificáveis: fluxo Configurar → Escanear → Revisar → Confirmar; tipos de arquivo; persistência em Application Support; critérios de “original preservado” versus cópia descartável. SDD aqui não é documento corporativo — é contrato comigo mesmo e com o agente de código.

Cada tarefa de implementação saía amarrada a essa spec: IPC nomeado (scan:start, progresso, conclusão), estado na UI com Zustand, worker separado para não travar a interface. Quando a IA sugeria atalhos fora do escopo, a pergunta era: “isso está na spec ou é feature creep?”

3. Figma MCP na prática

Quis consistência visual — vidro fosco, índigo de marca, dark mode — sem reinventar componente a cada tela. Usei MCP Figma para puxar contexto de frames/protótipos e traduzir tokens (superfícies, tipografia Inter, halos de loading) para CSS no app. O design-info.md do repositório virou ponte entre design e código.

Isso reduziu “vibe UI”: cores e espaçamentos deixam de ser palpite do modelo e passam a referenciar decisões visuais já revisadas. O custo é disciplina — atualizar Figma ou tokens quando a spec muda, não só pedir outro layout ao agente.

Tela de revisão do Twice listando grupos de capturas de tela duplicadas.

Revisão antes da Lixeira: grupos, filtros e preview — nada automático.

4. Arquitetura do app

Stack: Electron 34, electron-vite, React 19, TypeScript, processo main com orquestrador de scan, worker para hashing/comparação, preload tipado e build macOS via electron-builder. Não escolhi Electron por moda — escolhi porque o problema é desktop nativo (Lixeira, permissões de pasta, worker pesado) com UI rica que eu já domino em React.

O Twice não prova que sou “desktop engineer primeiro”; prova que consigo escolher a ferramenta certa, decompor o sistema (IPC, estado, scan, revisão) e entregar algo que uso no dia a dia.

Modal do Twice confirmando mover cópias para a Lixeira com espaço recuperável.

Confirmação explícita: originais preservados, cópias recuperáveis pela Lixeira.

5. IA intencional (sem vibe coding)

Usei agentes para acelerar boilerplate, refinar componentes e explorar variantes — sempre com spec, diff revisado e teste manual nas pastas reais do meu Mac. IA boa neste case é copiloto com limite: não decide sozinha o que apagar, não inventa permissão de segurança, não substitui entendimento de worker ou IPC.

O resultado não é perfeito nem “startup de IA”. É um utilitário honesto, alinhado a um problema meu, construído com o mesmo rigor que levo a produtos maiores — só que aqui a equipe sou eu, o revisor também, e o usuário final acordo de manhã quando o disco respira de novo.