Fotos GEFI, case de ia (2026)

Resumo
O Fotos GEFI (SnapFinder) é o acervo privado de fotos do Grupo Escoteiro Franca do Imperador. Cada pasta do Google Drive vira um álbum de sábado, e pais, jovens e escotistas encontram as fotos em que aparecem enviando uma selfie, em vez de rolar centenas de imagens. O acesso é restrito a membros identificados pelo Registro Escoteiro ou CPF, e a chefia faz a curadoria dos álbuns. Feito com TanStack Start, React 19, Tailwind 4, Supabase e Google Drive, com reconhecimento facial ArcFace.
Read in English
Fotos GEFI (SnapFinder) is the private photo archive of the Franca do Imperador Scout Group. Each Google Drive folder becomes a Saturday album, and parents, youth members and leaders find the photos they appear in by sending a selfie, instead of scrolling through hundreds of images. Access is restricted to members identified by Scout Registration or CPF, and the group leadership curates the albums. Built with TanStack Start, React 19, Tailwind 4, Supabase and Google Drive, with ArcFace face recognition.
Contexto
O Grupo Escoteiro Franca do Imperador tem atividades aos sábados, e cada uma gera centenas de fotos guardadas em pastas do Google Drive. Para uma família achar o filho, era preciso abrir álbum por álbum e rolar imagem por imagem.
O Fotos GEFI mantém o Drive como fonte e coloca por cima uma busca por rosto, acesso restrito e curadoria. Usam pais e responsáveis, jovens e escotistas; a chefia, com três contas de administração, sincroniza os álbuns e aprova o que aparece. Por serem fotos de crianças, a privacidade veio antes da conveniência.
PROBLEMA
Achar as fotos de um jovem exigia abrir álbum por álbum e rolar centenas de imagens no Drive.
Descobertas e Decisões
Detectar no navegador, reconhecer no servidor
O face-api detecta o rosto no aparelho, e o vetor ArcFace é gerado numa API Python (insightface), comparado em memória com um catálogo de rostos em cache por 15 minutos. O recorte enviado deixou de ser esticado em 128×128 e passou a ser quadrado, de 256 px e com margem, porque o detector do ArcFace precisa ver o rosto inteiro sem distorção.
Curadoria com duas assinaturas
Nenhum álbum é publicado sem a aprovação de duas pessoas diferentes da chefia, e a mesma pessoa não assina duas vezes. Ao publicar, as fotos recusadas saem do catálogo e do Drive e entram numa lista de expurgadas, para nunca voltarem à fila.
Login sem senha para as famílias
Membros e pais entram com Registro Escoteiro ou CPF, sem senha, porque o público inclui pais pouco técnicos. Só administradores confirmam com senha. Convidados pedem acesso por formulário e, aprovado pela chefia, o acesso vale 30 dias. As senhas fixas de admin foram removidas: o papel vem do cadastro.
O Google Drive como fonte das fotos
As fotos continuam onde a chefia já as guarda. O app lê as pastas pela API do Drive e indexa os rostos no Supabase, então subir uma foto é colocá-la na pasta do sábado, sem upload em outro sistema.
Independente da plataforma de origem
O projeto foi desvinculado do Lovable e passou a operar com Supabase, Google Drive e Node.js na Hostinger. Há limite de pedidos por IP e por pessoa nas ações sensíveis (login, busca e feedback de rosto), tabelas de fotos trancadas no banco e chaves apenas no servidor.
Processo
Recuperação do código
Em 13/10/2026 o projeto foi recuperado de um backup da Hostinger, com README, guia de deploy e guia para conectar o Google Drive.
Indexação dos álbuns
Scripts sincronizam as pastas do Drive e processam cada álbum, extraindo rostos e gravando os vetores no Supabase, com auditorias de duplicadas e de contagem de rostos.
Busca e curadoria
Busca com ArcFace e limiar padrão de 0,48 de similaridade, verificação rápida com feedback positivo e negativo guardado, fluxo de aprovação e arquivamento por álbum.
Publicação e orientação
Deploy Node.js na Hostinger, com cookie seguro e HSTS em produção, e um tutorial de cinco passos dentro do app para quem usa pela primeira vez.
Visão Geral
Cada sábado escoteiro, achado pelo rosto.
Acesso por Registro Escoteiro, CPF ou código de convidado.

Funcionalidades
Busca por rosto
O navegador detecta o rosto da selfie (face-api) e o servidor gera o vetor ArcFace, que é comparado com os rostos já indexados no Supabase. A pessoa vê só as fotos em que aparece. A verificação rápida, com respostas Sim e Não, treina a busca, e o perfil aceita várias fotos do mesmo rosto.
Selfie
ArcFace
Verificação rápida
Perfil com várias fotos
Álbuns do Google Drive
Cada pasta do Drive vira um álbum, uma por atividade de sábado, organizados por ano e data. Quando a mesma foto existe em versão editada e em original, o app agrupa as duas e mostra a melhor.
Google Drive
Por ano
Editada e original
Minhas fotos primeiro
Ao abrir um álbum, as fotos em que a pessoa aparece sobem para o topo, com o selo “Você” e o índice de correspondência facial. A família não precisa procurar foto por foto.
Selo “Você”
Ordem automática
Por álbum
Visualizador de foto
Com a foto aberta, é possível marcar quem aparece, calibrar a IA, alternar entre editada e original, favoritar e baixar a original em alta definição. As favoritas ficam numa galeria pessoal.
Marcar pessoas
Favoritar
Baixar original




Resultado
Os pais encontram mais fotos, e mais rápido.
2
assinaturas de pessoas diferentes para publicar um álbum
1 pasta
do Drive por sábado: colocar a foto na pasta é o upload
5
passos de tutorial dentro do app
Os pais conseguem achar mais fotos, em menos tempo, e o tempo para subir uma foto ficou menor porque o app é vinculado ao Google Drive. Não há medição registrada: os números acima descrevem a estrutura do app, não um ganho medido.
Stack
- TanStack Start
- React 19
- TypeScript
- Tailwind 4
- Supabase
- Google Drive API
- face-api (navegador)
- ArcFace / insightface
- Hugging Face Space
- Hostinger Node.js
- Servidor Node.js na Hostinger; a API Python do ArcFace roda à parte, em um Space do Hugging Face, e é chamada com chave compartilhada. Segredos só no servidor.
Quer um projeto assim?
Conte o que você precisa. Respondo com escopo, prazo e valor, sem enrolação.
Pedir orçamento