Apuração do 2º turno para presidente ainda não começou. No 1º turno, Flávio Bolsonaro teve 47,03% dos votos válidos e Lula, 45,16%. Dados do TSE às 09:38:12 de 15/10/2026.

Uma demonstração técnica

Este site é uma demonstração da EadTech, parceira da Adobe, montada no ambiente de testes (sandbox) que a Adobe oferece a parceiros. O objetivo é testar na prática o AEM Edge Functions, recurso que a Adobe lançou em beta, junto com o Edge Delivery Services, o Universal Editor e o App Builder. Não tem fins comerciais, não é um produto da Adobe e não é um serviço em produção.

O caso escolhido é exigente de propósito: um placar que muda a cada minuto, lido no celular, com projeção estatística e sem deixar a fonte dos dados exposta.

Quem faz o quê

São duas peças da Adobe trabalhando em turnos diferentes. A Edge Function roda na borda, a cada visita, e monta a página em poucos milissegundos perto de quem lê. O App Builder roda nos bastidores: uma ação acorda a cada minuto para ler o TSE e fazer as contas, outras duas respondem só à borda. Nenhuma visita chega ao TSE nem ao App Builder diretamente.

Passe o mouse (ou o foco do teclado) numa peça para ver com quem ela conversa.

acesso
navegador
Seu navegador
Celular ou computador
Só conhece apuracao2026.eadtech.net. A cada 15 segundos pergunta se o TSE publicou algo novo e atualiza o placar sem recarregar.
cdn
borda
cdn
CDN da Adobe
AEM Managed CDN, regras no Cloud Manager
Recusa o que não for leitura, limita quem repete pedido demais e guarda cada resposta por 10 segundos. Acrescenta ao pedido o segredo que tranca o App Builder.
edge
borda
edge
Edge Function apuracao-borda
AEM Edge Functions (beta), JavaScript em WebAssembly

Monta cada página: busca o HTML no Edge Delivery e o painel no App Builder ao mesmo tempo, coloca os números dentro da página e devolve tudo pronto, com os cabeçalhos de segurança.

Esconde os endereços de origem. Também responde /api/painel.json, /llms.txt e as rotas de consentimento.

eds,painel,consentimento
origem
eds
Edge Delivery Services
AEM Sites, Universal Editor, AEM Assets
Páginas, textos, planilhas das pesquisas e fotos dos candidatos. Tudo é editado do lado do conteúdo, no Universal Editor.
origem
painel
Ação painel
App Builder (Adobe I/O Runtime)
Lê o último retrato da apuração e devolve o JSON do placar. Sem o segredo da CDN, recusa o pedido.
state
origem
consentimento
Ação consentimento
App Builder (Adobe I/O Runtime)
Grava cada escolha de cookies com recibo, por um ano. O relatório só abre para quem entra com um Adobe ID autorizado.
state
dados
tse
Arquivos do TSE
Divulgação de resultados do TSE
Totais por estado e resultado por município, publicados ao longo da apuração.
dados
coletar
Ação coletar
App Builder, alarme de 1 minuto
Acorda a cada minuto, lê no TSE só os arquivos que mudaram, roda a projeção por município com 3.000 simulações e grava o retrato.
tse,state
dados
state
App Builder State
Armazenamento chave-valor
Guarda o retrato mais recente da apuração e os registros de consentimento.
operacao
github
GitHub
Código, Code Sync e esteira
Guarda o código. Cada envio vai para o Edge Delivery pelo Code Sync, e uma esteira roda o Lighthouse e publica a nota da faixa do topo.
eds
operacao
cloudmanager
Cloud Manager
Pipeline de configuração
Implanta as regras da CDN, a declaração da Edge Function e a variável secreta do segredo.
cdn,edge

O caminho de um acesso

Você abre apuracao2026.eadtech.net
Navegador
O navegador só conversa com este domínio. Nenhum endereço do TSE ou do App Builder aparece para ele.
CDN da Adobe
AEM Managed CDN (configuração no Cloud Manager)
Filtra o tráfego (o site só aceita leitura e limita pedidos repetidos), coloca os cabeçalhos de segurança e põe no pedido o segredo que só ela conhece.
Edge Function apuracao-borda
AEM Edge Functions, em JavaScript compilado para WebAssembly (Fastly Compute)
Busca a página no Edge Delivery e o painel mais recente no App Builder, junta os dois e devolve a página já com os números dentro. Guarda o painel por 10 segundos, então os pedidos que chegam nesse intervalo são atendidos por uma consulta só.
Páginas e textos
Edge Delivery Services + Universal Editor (AEM Sites)
Todo texto, rótulo e aviso é editado no Universal Editor. As imagens vêm do AEM Assets.
Painel e registro de consentimento
App Builder (Adobe I/O Runtime + State)
Duas ações web, trancadas pelo segredo da CDN: uma entrega o último painel, a outra guarda a escolha de cookies de cada visitante, sem dado pessoal.
Coletor
App Builder, alarme de 1 minuto
Lê os arquivos públicos de resultado do TSE com cache condicional (só baixa o que mudou), roda o modelo município a município e grava o painel.

Por que Edge Function

As alternativas consideradas foram chamar o App Builder direto do navegador (expõe o endereço e abre a ação a qualquer um) e uma página estática com JavaScript buscando os dados (a página abre vazia e perde desempenho).

Por dentro, em detalhe

Esta parte é para quem vai abrir o código ou repetir a montagem em outro projeto. Os números de tempo foram medidos no domínio em 21/10.

1. O pedido, passo a passo

  1. Regras da CDN. O pedido chega à CDN gerenciada do AEM. Primeiro passam os filtros de tráfego: so-leitura bloqueia qualquer método que não seja GET, HEAD ou OPTIONS (a exceção é /consent-log), e painel-sem-enxurrada limita cada IP a 30 pedidos em 10 segundos nas rotas /api/* e /consent-*, com 60 segundos de castigo.
  2. O segredo entra no pedido. Uma request transformation põe o cabeçalho x-require-whisk-auth com o valor da variável secreta APURACAO_ORIGEM_SEGREDO do pipeline. O navegador nunca vê esse valor, e ele não está no código.
  3. Escolha da origem. Um origin selector manda para a origem edgefunction-apuracao-borda as páginas (caminho sem extensão), o /llms.txt, o /api/painel.json, o /api/serie.json e as três rotas de consentimento, estas sem cache. Scripts, estilos, fontes, imagens e planilhas vão direto ao Edge Delivery, com cache normal.
  4. A Edge Function busca as duas origens em paralelo. Com Promise.all, pede o HTML ao Edge Delivery (cache de 60 s na borda) e o painel ao App Builder (cache de 10 s), repassando o segredo. Medido sem cache: de 100 a 320 ms para as duas buscas, e 1 a 2 ms para montar a página.
  5. Montagem. A função injeta no <head> uma ilha <script type="application/json" id="painel-inicial"> com o painel, escapado para não fechar a tag nem abrir comentário HTML, e põe no começo do <main> um resumo em texto para quem não executa JavaScript (buscadores e agentes de IA). O JavaScript da página retira esse resumo na fase eager.
  6. Resposta. Sai com cache-control: public, max-age=0, s-maxage=10, stale-while-revalidate=30: a CDN guarda 10 s e pode servir a cópia anterior por mais 30 s enquanto renova. Os pedidos que chegam dentro desses segundos são atendidos com uma busca só à origem. O cabeçalho server-timing leva os dois tempos até o navegador, e a faixa do topo os mostra.

2. A Edge Function, por dentro

3. O App Builder, por dentro

4. O modelo da projeção

5. A página no navegador

6. O que o sandbox muda

Como a projeção é calculada

Cada município é comparado com ele mesmo no 1º turno, só entre os dois candidatos. A diferença medida nas cidades já apuradas estima o que falta em cada estado, com uma hierarquia país, região e estado. Os municípios entram com peso maior quanto mais completa está a apuração deles, porque a parcial de uma cidade grande engana. A incerteza vem de 3.000 simulações. A chance de vitória só aparece a partir de 15% das seções apuradas e com urnas em pelo menos 20 estados.

No teste com o 2º turno de 2022, na ordem real de chegada das urnas, o erro médio da projeção foi de 0,04 ponto percentual.

Desempenho, acessibilidade e segurança

O que aprendemos com o Edge Functions

Aviso

Os números oficiais são os do Tribunal Superior Eleitoral. Este site lê os arquivos públicos do TSE e pode atrasar, falhar ou mostrar dados incompletos. A projeção e a chance de vitória são estimativas estatísticas, não resultado. O site não tem relação com o TSE, partidos, candidatos ou campanhas.

É uma demonstração técnica da EadTech no sandbox de parceiro da Adobe, usado conforme os termos do programa: para demonstração e capacitação, sem produção, sem piloto, sem teste de carga e sem guardar dado pessoal. O AEM Edge Functions é um recurso novo e partes do site podem deixar de funcionar a qualquer momento. Não é um produto nem um serviço da Adobe.

Fontes: resultados e fotos dos candidatos vêm de bases públicas do TSE (arquivos de resultado e DivulgaCandContas). As pesquisas citadas são as registradas no TSE.