Como construí um agregador de dados dos 5 presidenciáveis com Next.js
Passei as últimas semanas construindo o presidenciaveis-2026.vercel.app, um agregador não-partidário com perfil completo dos 5 candidatos à presidência: Lula, Flávio Bolsonaro, Renan Santos, Caiado e Zema. O código está aberto: github.com/rcarubbi/presidenciaveis-2026.
O problema: Dados eleitorais no Brasil são fragmentados. TSE tem formato próprio, institutos de pesquisa publicam PDF, YouTube tem APIs separadas. Cada fonte tem estrutura e confiabilidade diferentes.
Solução em camadas:
-
Dados estáticos dos candidatos em TypeScript puro — perfil, carreira, posicionamento político, escândalos, financiamento. Cada campo usa o tipo
DataValue<T>que força{ value, source (URL), updatedAt }. Nada aparece sem referência. -
API SapiensLabs (
eleicoes2026.sapienslabs.com.br/api/v1) para cobertura jornalística — série histórica de sentimento, artigos por candidato, top fontes e tópicos. Um proxy Next.js com revalidate de 5 min. -
Dados TSE com parser próprio — o CSV de pesquisas eleitorais do TSE tem peculiaridades (encoding, campos ausentes, delimitadores). Um serviço dedicado normaliza tudo.
-
95 vídeos do YouTube embedados por categoria (entrevistas, debates, campanha). Extração manual dos IDs com verificação.
Features que deram mais trabalho:
- Comparador lado a lado — renderizar dois candidatos com as mesmas seções sincronizadas por abas exigiu componentização cuidadosa. Aprendi que composição com children ganha de props booleanas.
- Dados de pesquisa duais — toggle entre institutos privados (Datafolha, Quaest, AtlasIntel, Real Time Big Data) e dados oficiais do TSE, com gráficos Recharts de 1º/2º turno, rejeição, espontânea e regional.
- 5 candidatos × 9 seções de conteúdo estático. Geração estática com
generateStaticParams.
Feedbacks são bem-vindos, especialmente de quem já lidou com dados governamentais ou multi-fonte. Como vocês estruturariam a camada de dados?