-2

Presidenciáveis 2026: o que mudou no app comparativo apartidário das eleições nos últimos 5 dias

presidenciaveis-2026.vercel.app | github.com/rcarubbi/presidenciaveis-2026


Há cinco dias o Presidenciáveis 2026 era um protótipo com 3 candidatos (Lula, Flávio, Renan) e dados mornos. Hoje são 5 candidatos completos, cada um com perfil, propostas em 12 áreas, dezenas de vídeos categorizados por mês, cobertura jornalística via API, push notification e um redesign do zero.

Segue o changelog dos destaques.


1. Arquitetura de dados: de monolito a módulos

Antes: um candidates.ts de 3.146 linhas. Uma edição quebrava tudo.

Agora: cada candidato tem seu próprio arquivo (lula.ts, flavio.ts, renan.ts, caiado.ts, zema.ts), com propostas separadas (proposals-*.ts), mídia separada (media-*.ts), tudo tipado e importado por um index.ts enxuto.

Impacto prático: atualizar um candidato não mexe nos outros. Dá para abrir PRs paralelos sem conflito.

2. Três novos candidatos

O site saiu de 3 para 5 presidenciáveis:

CandidatoPartidoNúmero
LulaPT13
Flávio BolsonaroPL22
Renan SantosMissão44
Ronaldo CaiadoPSD55
Romeu ZemaNOVO30

Cada um com biografia, carreira, posicionamento ideológico, escândalos de corrupção, financiamento de campanha e diversos videos.

3. Cobertura jornalística (Sapiens Labs)

Integração com a API eleicoes2026.sapienslabs.com.br via proxy próprio (/api/sapiens/[...path]).

O sistema traz para cada candidato:

  • Sentimento da cobertura (positivo/negativo/neutro)
  • Artigos recentes
  • Top fontes
  • Tópicos mais frequentes
  • Evolução temporal (gráfico de linhas)

Tudo cacheado por 5 minutos para não sobrecarregar a API.

4. Push notification

Se você quer ser avisado quando novos dados entrarem, o site agora tem notificações push com service worker. Funciona no Chrome/Edge/Android. Sem app, sem extensão — só clicar "ativar notificações" e pronto.

5. Redesign visual

O layout foi reescrito do zero. Resultado final:

  • Hero com foto, partido, número estilizado, idade e cargo
  • Número do partido em destaque no card e no hero
  • Selos de status nos vídeos (Visto, assistindo) com ícones
  • Modo comparativo reformulado: selecione os candidatos e veja lado a lado propostas, posicionamento e mídia
  • Gráficos: pesquisa eleitoral com pizza, barras agrupadas, barras horizontais e linhas (Recharts)
  • Toaster de notificações in-app (sonner)

6. Fontes validadas

Cada dado no site tem URL de origem + data de verificação. Diariamente eu rodo um processo para revalidar as fontes e adicionar novas informacöes/vídeos para cada candidato.

Sistema de skills no OpenCode para automatizar a validação.

7. Infraestrutura

  • npm → pnpm: migração do gerenciador de pacotes (lockfile 7k linhas a menos)
  • Vercel Web Analytics + Speed Insights: monitoramento de performance e tráfego
  • Next.js 16 + React 19 + Tailwind 4 + TypeScript ~6
  • Oxlint no lugar de ESLint (mais rápido)
  • Service worker para push + cache de assets

8. Scripts de automação

Dois scripts que rodam na esteira:

  • scripts/fetch-candidate-news.ts — busca notícias recentes dos candidatos
  • scripts/fetch-youtube-videos.ts — sincroniza vídeos do YouTube por playlist

O projeto é open source (MIT), apartidário e sem fins eleitorais (Art. 57-B Lei 9.504/97). Contribuições são bem-vindas.

presidenciaveis-2026.vercel.app: veja o resultado ao vivo.

Carregando publicação patrocinada...
-2

O site está bonito.
A principal crítica é que está repetitivo labels que estão alinhados a esquerda do real conteúdo que interessa.

Pra mim, a parte mais importante é comparar as propostas, não precisa repetir o label "Aborto" em cada ficha de candidato, na verdade deveríamos era ter um tabelão e em cada célula ter ali a opnião. Isso facilita a comparação por tema.

"Ain mas nem todo tema todo candidato se manifetou.". Paciência. Nesses casos a célula fica em branco para não poluir o site ou simplesmente com um aviso "Sem opnião emitida".

O ideal é não ter esse design em "fichas" uma ao lado da outra e sim um tabelão que uniforme os candidatos ou em linhas ou em colunas.
Como a quantidade de candidatos é menor do que temas, candidatos seriam as colunas, na primeira coluna da tabela temos o label (Ex: Aborto) e em cada célula daquela linha temos a opnião do candidato ou proposta.