尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
Plataforma Cívica Independente de Transparência Política e Fiscal do Brasil
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗[!WARNING]
⚠️ Aviso Importante (Fase de Desenvolvimento)
O projeto LegisData encontra-se em fase ativa de desenvolvimento e prototipagem contínua. Em virtude do processo iterativo de consolidação de dados e integração das APIs oficiais do Congresso Nacional e dos ministérios, a plataforma pode conter erros ou inconsistências pontuais na apresentação dos dados.
⚠️ Nenhum dado é inventado ou preenchido com dados sintéticos.
Quando uma informação não é fornecida pelas APIs e relatórios oficiais, o campo permanece estritamente
nulle a interface exibe "Dado indisponível", assegurando total conformidade jurídica e técnica.
O LegisData rejeita categoricamente qualquer forma de dado mockado em produção, interpolação sintética ou aproximação algorítmica não rastreável. Toda e qualquer informação disposta na plataforma possui procedência institucional pública e verificável, em estrita consonância com a Lei de Acesso à Informação (Lei nº 12.527/2011) e a Constituição da República Federativa do Brasil de 1988.
🤖 Nota de Desenvolvimento (Vibe Coding)
Este projeto foi idealizado e arquitetado por mim, mas seu código-fonte foi integralmente desenvolvido através da metodologia de Vibe Coding (programação assistida por Inteligência Artificial / LLMs). A stack tecnológica utilizada (Python, FastAPI, Next.js, PostgreSQL) não faz parte do meu domínio principal. Meu foco foi a engenharia de prompts, visão do produto de dados, regras de negócio e arquitetura da informação para criar uma plataforma robusta de transparência pública.
Autor: Saulo Araujo Campos • Licenciado sob GNU AGPLv3
O LegisData foi concebido como uma resposta técnica, visual e independente à polarização vazia e à desinformação no debate público brasileiro. Em vez de narrativas sem lastro empírico, a plataforma centraliza dados abertos oficiais de múltiplos órgãos de Estado para responder com rigor às principais perguntas do cidadão:
docs/PENDENCIAS_E_LACUNAS.md § 2.3).Todos os dados são coletados de forma rastreável por extratores dedicados (User-Agent: LegisDataBot/1.0), estritamente fundamentados na Lei de Acesso à Informação (Lei nº 12.527/2011). Consulte a especificação exaustiva em docs/FONTES_URLS_E_APIS.md.
| Órgão / Instituição | Dados Coletados | Endpoint / Repositório Oficial |
|---|---|---|
| Câmara dos Deputados | Deputados, mandatos, presenças em plenário, votos nominais, comissões, proposições, salários mensais e despesas da cota (CEAP) | dadosabertos.camara.leg.br/api/v2 e portal oficial |
| Senado Federal | Senadores, mandatos, proposições legislativas, sessões deliberativas, comissões e totais de votações secretas | legis.senado.leg.br/dadosabertos |
| TSE (Justiça Eleitoral) | Prestações de contas eleitorais, doações de campanha, certidões de candidatura e declarações de bens | Portal Dados Abertos TSE (dadosabertos.tse.jus.br) |
| DataJud (CNJ) | Metadados processuais oficiais (TPU), classes, assuntos, órgãos julgadores e datas de distribuição | API Pública do CNJ (api-publica.datajud.cnj.jus.br) |
| Portal da Transparência (CGU) | Emendas orçamentárias (individuais, bancadas, comissões, relator) e transferências federais por UF | portaldatransparencia.gov.br/download-de-dados |
| Banco Central do Brasil (BCB) | Séries temporais de IPCA, taxa Selic, Câmbio USD PTAX e Dívida Líquida/PIB | Sistema Gerenciador de Séries Temporais (SGS) |
| IBGE (SIDRA e Microdados) | Contas Nacionais (PIB real), inflação (IPCA), desemprego e classes de salário mínimo da PNAD Contínua | Banco SIDRA e microdados da PNAD Contínua |
| INPE | Desmatamento anual consolidado na Amazônia Legal e Cerrado | Projeto PRODES / Plataforma TerraBrasilis |
| IPEA & FBSP | Séries históricas de segurança pública e taxas de homicídio | Atlas da Violência / IpeaData |
O portal oficial da Câmara dos Deputados (
camara.leg.br) não possui relatórios de presença para o ano de 2019. O serviço oficial de publicação de presenças por sessão deliberativa teve início em 2020. Por isso, em cumprimento irrestrito ao Princípio de Confiabilidade Oficial, os dados de presença de 2019 permanecem estritamentenullno banco de dados e a interface exibe "Dado indisponível". Para os anos de 2020 a 2026, 100% dos dados de presença estão baixados e carregados (328.715 dias de sessões).
Por determinação constitucional e regimental, em escrutínios secretos (como apreciação de autoridades e vetos presidenciais), o Senado Federal não disponibiliza o voto nominal individual de cada senador em sua API de Dados Abertos. Nesses casos, o LegisData exibe fidedignamente o placar agregado oficial apurado na urna (
Sim,Não,Abstenção), omitindo o votante individual e exibindo um banner oficial de esclarecimento ao cidadão.
A Câmara dos Deputados publica o contracheque mensal de seus parlamentares desde 2019 (100% extraído e carregado no banco: 39.263 folhas salariais). O Senado Federal não possui endpoint público estruturado para folha salarial nominal individualizada; portanto, seus campos permanecem
nullexibindo "Dado indisponível".
Emendas do tipo "Bancada Estadual", "Comissões" e "Relator-Geral" não pertencem a um parlamentar individual. A API do LegisData categoriza essas emendas pelo tipo institucional (
BANCADA_ESTADUAL,COMISSAO_INSTITUCIONAL,RELATOR_GERAL), com rotulagem amigável que explica ao cidadão que o recurso decorre de deliberação coletiva.
A utilização da API Pública do Conselho Nacional de Justiça (DataJud) pelo LegisData é pautada pelo estrito cumprimento da ordem jurídica brasileira, da Portaria CNJ nº 160/2020, da Resolução CNJ nº 332/2020 e da Lei Geral de Proteção de Dados (LGPD — Lei nº 13.709/2018):
A infraestrutura e o pipeline de CI/CD do LegisData foram endurecidos contra ameaças cibernéticas:
docker-compose.yml de produção, PostgreSQL e backend não publicam portas no host; a comunicação ocorre pela rede interna do Compose. O frontend escuta em 127.0.0.1:3000 para ser exposto por proxy reverso com terminação TLS e cabeçalhos HSTS.DB_SSLMODE).appuser), com no-new-privileges, cap_drop: ALL, healthchecks e limites de recursos.black, isort), linters (flake8, eslint), checagem de tipos (mypy, tsc), segurança estática (bandit, pip-audit, npm audit, CodeQL e Trivy) e esteira completa de testes (pytest e vitest).pydantic-settings para validação estrita de contratos.presidencia_service.py, lido de core.mandato_presidencial) como fonte única de verdade temporal e política.pytest (backend e ETL isolados) e vitest (frontend)..envgit clone https://github.com/saulozitos/LegisData.git
cd LegisData
# Copie o arquivo de exemplo e defina uma senha forte
cp .env.example .env
Edite o .env garantindo que a variável POSTGRES_PASSWORD esteja preenchida:
POSTGRES_USER=politica_user
POSTGRES_PASSWORD=sua_senha_secreta_aqui
POSTGRES_DB=politica_db
POSTGRES_PORT=5432
POSTGRES_SERVER=localhost
ENVIRONMENT=development
make up-db
(Ou diretamente: docker compose up -d postgres)
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r backend/requirements.txt -r backend/requirements-dev.txt
pip install -r etl/requirements.txt -r etl/requirements-dev.txt
make run-load-db
O pipeline executará as migrações, ingerindo séries históricas, parlamentares, cota CEAP, emendas, processos e doações do TSE.
Cargas complementares de assiduidade e remuneração oficiais, e das séries econômicas e dos mandatos presidenciais
(eco.observacao, core.mandato_presidencial):
python etl/run_etl.py --load-presenca
python etl/run_etl.py --load-economia # semeia do git só a CEAP/emendas que o fin não tem ou que o timer não assumiu; o resto, só as estáticas
Para recarregar CEAP e emendas dos arquivos gerados à mão: --load-economia --recarregar-ceap-emendas.
make backend-dev
A API estará em execução em http://localhost:8000.
http://localhost:8000/docshttp://localhost:8000/redocEm outro terminal:
cd frontend
npm install
npm run dev
O portal estará disponível em http://localhost:3000.
Para validar localmente todo o código antes de submeter commits ou Pull Requests:
# Executa todos os testes, linters, tipagem e build em modo fail-fast
make ci
Você também pode executar as validações de forma granular:
| Comando | Descrição |
|---|---|
make format | Autoformatação de código Python com black e isort |
make lint | Análise estática com flake8 (Python) e eslint (TypeScript) |
make typecheck | Checagem de tipos com mypy e tsc --noEmit |
make security | Auditoria estática de vulnerabilidades com bandit e pip-audit |
make test | Execução das suítes de testes automatizados (pytest e vitest) |
make build-frontend | Validação de compilação de produção do Next.js |
| Método | Endpoint | Descrição |
|---|---|---|
GET | /api/v1/politicians | Listagem e busca de políticos (filtro por mandato presidencial mandate_id, cargo, partido, UF) |
GET | /api/v1/politicians/{id} | Dossiê completo: perfil, Basômetro real, relevância legislativa e assiduidade |
GET | /api/v1/politicians/{id}/doacoes | Prestações de contas eleitorais e Top Doadores oficiais (TSE) de uma eleição (?ano_eleicao=; sem ela, a mais recente); total_doadores conta doadores distintos e demais_doadores traz a linha agregada da fonte |
GET | /api/v1/politicians/{id}/ceap | Cota parlamentar: totais por ano e tipo de despesa (sem a lista nota a nota; sem despesa, total_gasto e total_notas vêm nulos). Contrato completo da 3c em docs/PLANO_REFATORACAO_BANCO_DE_DADOS.md |
GET | /api/v1/politicians/{id}/emendas | Emendas parlamentares individuais vinculadas |
GET | /api/v1/politicians/{id}/certidoes | Certidões judiciais cíveis e criminais enriquecidas via DataJud / CNJ |
GET | /api/v1/emendas/resumo | Visão macro das emendas: totais pagos/empenhados, divisão por tipo de autor e áreas |
GET | /api/v1/emendas/localidade/{localidade} | Consulta territorial de emendas por município ou UF de destino |
GET | /api/v1/emendas/autor/{autor} | Consulta de emendas por deputado, senador, comissão, bancada estadual ou relator |
docs/FONTES_URLS_E_APIS.md: Registro exaustivo de 100% das URLs, endpoints, parâmetros e periodicidade de todas as fontes.docs/AUDITORIA_PROPOSICOES.md: Auditoria técnica sobre proposições do Senado e caso do deputado Duda Ramos.docs/METODOLOGIA_ATIVIDADE_LEGISLATIVA.md: Metodologia de atividade legislativa ponderada, separação de papéis, pesos por complexidade e tramitação.docs/CONFERENCIA_PNAD.md: Comparativo metodológico dos microdados da PNAD Contínua com as publicações do IBGE (SIS).docs/SERIES_CURADAS_E_FONTES.md: Rastreamento de fontes oficiais e justificativas para séries históricas institucionais.docs/DECISOES_E_DUVIDAS_PENDENTES.md: Registro de pontos em aberto para validação e direcionamento do mantenedor.docs/PENDENCIAS_E_LACUNAS.md: Relatório de status e resolução de todas as pendências identificadas no ciclo de refatoração.Este projeto é software livre licenciado sob a GNU Affero General Public License v3.0 (GNU AGPLv3). Copyright (c) 2026 Saulo Araujo Campos. Todas as informações exibidas constituem patrimônio público acessível sob os ditames da Lei nº 12.527/2011 (LAI) e da legislação eleitoral brasileira.
docs/ESPECIFICACAO_TECNICA_IPLE.md.GET/api/v1/economic/annual-summary |
| Séries macroeconômicas oficiais desde 1995 (PIB, IPCA, Dólar, Salário Mínimo, Dívida) |
GET | /api/v1/analytics/mandates-performance | Desempenho consolidado por mandato presidencial |
GET | /api/v1/analytics/compare-mandates | Comparação normalizada de mandatos presidenciais ($T_0 \dots T_n$) |
GET | /api/v1/analytics/social-classes | Distribuição de classes por salário mínimo baseada em microdados da PNAD Contínua |
GET | /api/v1/analytics/federal-transfers | Repasses federais diretos da União por Unidade da Federação |
GET | /api/v1/cidadania/consultas | Consultas públicas e enquetes ao vivo (Senado e Câmara) |
GET | /api/v1/legislative/ranking/authors | Produtividade legislativa ponderada: Score IPLE com critério (efetividade, lideranca, coautoria, volume), separação de autor principal vs coautor e taxa de eficiência |
GET | /api/v1/legislative/calendar | Calendário deliberativo anual com votações nominais e apuração de votos secretos |