Resultado em uma frase
Fotógrafos de eventos que entregavam fotos por link solto e negociavam venda por mensagem passaram a ter uma galeria própria onde o cliente escolhe as fotos e fecha o pedido pelo WhatsApp, e a plataforma virou um produto que sobe para um novo fotógrafo em menos de uma hora.
- Cliente: Flash Arena, plataforma de galeria e venda de fotos e vídeos para fotógrafos de eventos
- Meu papel: desenvolvimento, arquitetura do Supabase e transformação do projeto em produto replicável por cliente
- Prazo: primeira instância replicada para um novo cliente em maio de 2026
- Resultado principal: um novo cliente sobe com banco, storage, funções e conteúdo inicial em 45 a 60 minutos, seguindo um playbook
- Venda no canal que o cliente já usa: em vez de checkout com gateway, o pedido é montado na galeria e enviado formatado para o WhatsApp do fotógrafo, que é onde a negociação já acontecia.
- Não perder quem desistiu: se o cliente preencheu nome e WhatsApp e tem itens selecionados, a seleção é registrada como carrinho abandonado para o fotógrafo retomar o contato.
- Uma instância por cliente, sem retrabalho: levantei o inventário completo do projeto original (tabelas, funções, gatilhos, políticas, bucket, funções de borda) e transformei isso em migrations reproduzíveis e num playbook passo a passo, testado subindo um cliente real do zero.
- Pedido de fotos fechado direto no WhatsApp do fotógrafo, já organizado por evento e pasta
- Carrinhos abandonados registrados para o fotógrafo recuperar vendas
- Upload de arquivos grandes sem perder progresso
- Novo cliente no ar em 45 a 60 minutos, seguindo um playbook testado em produção
O contexto
Fotografia de evento vive de volume: centenas de participantes, milhares de fotos por dia e a venda acontecendo enquanto a emoção ainda está fresca. Quem compra quer achar as próprias fotos rápido, no celular, e quem vende quer receber o pedido sem planilha nem troca interminável de mensagens.
O problema
As fotos ficavam em links genéricos de armazenamento, o cliente precisava descrever quais queria por mensagem e muitos pedidos morriam no meio do caminho sem que o fotógrafo soubesse. Do lado técnico, a primeira versão funcionava para um único cliente: subir outro fotógrafo significava refazer banco, permissões, storage e funções na mão, com risco de esquecer alguma peça.
A abordagem
A solução
Galeria pública. Página inicial com conteúdo editável pelo admin, eventos filtráveis por ano, semestre e busca, e cada evento organizado em pastas, com carregamento progressivo das mídias para funcionar bem no celular.Por baixo do capô
React 18 com TypeScript, Vite, Tailwind e shadcn/ui no front; Supabase com Postgres, RLS, Auth, Storage e funções de borda para miniaturas e manutenção das mídias. Uploads usam o protocolo TUS, retomável, para arquivos de até 1,2 GB sem perder progresso quando a conexão oscila. Contagens de fotos e vídeos por evento e pasta saem de uma única consulta ou RPC, evitando o problema de N+1. O deploy roda em container com Nginx. Na replicação, fechei lacunas entre o projeto original e o repositório (migrations não aplicadas, uma política de RLS faltando nas pastas) antes de aplicar no cliente novo, e o processo ficou documentado de ponta a ponta com checklist e smoke test.
Resultados
O que eu levo deste projeto
O que separa um projeto de um produto é conseguir fazer de novo. Inventariar tudo o que o sistema realmente tem e transformar isso em migrations e num checklist foi menos glamoroso do que construir telas, e foi o que tornou o negócio escalável.


