DEV Community

Cover image for Construindo uma ferramenta cívica, open source e local-first para as Eleições 2026
Francisco Aleixo
Francisco Aleixo

Posted on

Construindo uma ferramenta cívica, open source e local-first para as Eleições 2026

Olá, comunidade dev.to! 👋

Gostaria de compartilhar um projeto em que estive trabalhando: o SaibaTudo — Eleições 2026. Trata-se de uma iniciativa cívica, independente, 100% de código aberto, sem anúncios e sem fins lucrativos, voltada a tornar o acesso a dados eleitorais públicos mais ágil, transparente e intuitivo no celular.

Neste post, quero detalhar a arquitetura técnica, as escolhas de design e como resolvemos desafios de integridade de dados e privacidade local-first.


🎯 Por que criar mais um app de eleições?

Consultar dados de candidaturas em interfaces governamentais costuma ser uma experiência pesada ou pouco amigável em telas móveis. Além disso, muitos serviços criados por terceiros acabam inserindo publicidade invasiva, rastreadores ou algoritmos de recomendação opacos.

O objetivo do SaibaTudo foi desenhar uma solução técnica guiada por 4 princípios:

  1. Dados 100% oficiais: Todo dado provém do Portal de Dados Abertos do TSE via licença CC BY. Se o dado não existe oficialmente, ele não aparece.
  2. Neutralidade estrita: O sistema não ranqueia, não recomenda e recusa pedidos de previsão de voto. Listas seguem ordem canônica oficial (cargo, UF, número).
  3. Privacidade e Local-First: Funciona offline, não requer login, não possui analytics comerciais e não envia dados do usuário para servidores externos.
  4. Transparência técnica total: Todo o pipeline de dados, o aplicativo Android e o site web possuem código aberto no GitHub para qualquer pessoa auditar.

🛠️ Stack e Arquitetura

TSE (Dados Abertos / CDN)
│
▼
pipeline/ (Python 3.12: Fetch incremental + ETL + Validação + Assinatura ECDSA)
│
├──► app Android (Kotlin, Jetpack Compose, MVVM, Assets + WorkManager)
├──► web/ (PWA em JavaScript puro, sem dependências externas)
└──► /api/nlu (Serverless + modelo local/nuvem restrito a fatos oficiais)

O projeto divide-se em três pilares principais:

1. Pipeline de Dados com Assinatura Criptográfica (ECDSA)

Para manter as informações atualizadas sem precisar forçar uma nova versão do app Android a cada mudança nos registros de candidaturas:

  • Um pipeline em Python coleta alterações de forma incremental (usando headers ETag e Last-Modified).
  • O pacote gerado é validado contra schemas rígidos e assinado com chaves assimétricas ECDSA.
  • O app Android valida o checksum e a assinatura criptográfica antes de carregar qualquer atualização dinâmica nos dados, impedindo adulterações sem ferir as políticas de Dynamic Code Loading da Google Play.

2. Android Moderno & Local-First

  • Linguagem/UI: 100% Kotlin com Jetpack Compose e arquitetura MVVM.
  • Testes: 41 testes unitários cobrindo desde integridade e falhas de assinatura até 46 casos de NLU e cenários de apuração.
  • Simulador Educativo da Urna: Criado para orientar o eleitor sobre a ordem de votação de forma puramente educativa.

3. Assistente de NLU Determinístico

Para responder dúvidas da população sem o risco de alucinações (comum em LLMs generativas), a IA local atua apenas identificando a intenção e as entidades da pergunta do usuário. O fato em si é extraído deterministicamente da base validada do TSE. Se o dado não existir, a IA não "inventa".


🔗 Links do Projeto

Se quiser testar a ferramenta ou analisar o código-fonte:


💬 Feedback e Contribuições

Adoraria receber o feedback de vocês sobre a arquitetura do pipeline, sugestões para a UI em Jetpack Compose ou melhorias nos testes de NLU.

Issues, pull requests e contribuições no GitHub são muito bem-vindos! ⭐

Top comments (0)