ImageX: editor de imagens generativo rodando 100% no navegador
Criei este projeto para testar o poder de integrar modelos generativos de última geração, como o Gemini 2.0 Flash Image e o Gemini 2.5 Flash (apelidado de “Nano Banana”), com um editor de imagem relativamente simples escrito em tecnologias web. O experimento confirmou que a combinação é potente: qualquer pessoa com um navegador e uma API key consegue gerar, editar e combinar imagens em minutos usando apenas linguagem natural — sem instalar software pesado ou dominar pipelines de ML.
Painel de camadas: cada iteração de prompt vira uma nova camada com ajuste independente de blend mode e visibilidade.
backdrop-filter, transparências) e Vanilla JS ES6+ — hoje com ~6,3k linhas.Map() mantém imagens de camadas em memória e Blob URLs cuidam dos assets temporários.
Interface principal: ferramentas tradicionais convivem com atalhos para prompts e inpainting diretamente sobre o canvas.
O editor evidencia como APIs generativas podem democratizar edição profissional. O usuário alterna entre ferramentas tradicionais (pincel, borracha, transformações) e prompts de linguagem natural para inpainting contextual ou geração de elementos inéditos. O sistema de camadas não destrutivo com blend modes, a seleção mágica baseada em SAM e a interface glassmorphic inspirada em iOS/macOS entregam uma experiência que parece nativa, mas roda inteiramente no navegador.
Resultado final: composição híbrida unindo geração de novos objetos (trono e armadura) com retoques manuais.
canvas.toDataURL() travam a thread principal durante a exportação, deixando a UI congelada, especialmente em mobile.A prova de conceito mostrou que misturar APIs generativas com um editor web é viável e oferece uma UX
competitiva. Ao mesmo tempo, o código monolítico, o excesso de estado global e a ausência de testes deixam
a base frágil. Antes de pensar em features novas, preciso de um refactor sério: modularizar em um modelo
tipo MVC, isolar estado com Proxy, tornar operações bloqueantes assíncronas, implementar cache LRU,
habilitar cross-origin isolation para liberar threading no WASM e escrever uma suíte de testes. Só depois
disso o ImageX pode virar produto.