O SGCD é uma aplicação web multiusuário para gestão completa de processos de Dispensa de Licitação conforme a Lei Federal nº 14.133/2021 (Nova Lei de Licitações e Contratos Administrativos). Desenvolvido para agentes de contratação pública, o sistema organiza todas as etapas do processo — da formalização da demanda até a publicação do contrato no PNCP — em um fluxo de trabalho guiado, com geração automática de documentos.
Compartilha a arquitetura (servidor Python + SQLite + frontend single-file, sem nada a instalar) com os sistemas irmãos SGCA, SGDP e SGEA.
Funciona em rede local: um único computador executa o servidor e todos os usuários acessam pelo navegador via IP ou localhost.
- Checklist estruturado com 18 etapas do processo de Dispensa de Licitação, cada uma com fundamento legal e orientação de preenchimento
- Geração automática de documentos prontos para assinatura: Autorização de Abertura, Aviso de Dispensa, Ata de Sessão, Mapa de Preços, Despachos e Extrato de Contrato — cada um com a opção "Gerar como MINUTA" (marca d'água), desmarcada por padrão
- Cadastro de fornecedores com consulta automática de CNPJ via ReceitaWS/BrasilAPI e controle de certidões com alertas de vencimento
- Gestão de propostas e cotações com cálculo automático do valor de referência por média, mediana ou menor preço (art. 6º da IN SEGES/ME nº 65/2021)
- Dotação orçamentária por processo — Programa/Ação, Elemento de Despesa, Fonte e Dotação Completa
- Verificação de conformidade automática: aponta pendências e inconsistências no processo
- Alerta de fracionamento — detecta processos com objetos similares e calcula soma dos valores no exercício
- Controle de limites anuais Art. 75, I e II com painel de acumulado e alerta ao atingir o teto legal
- Cálculo automático de prazos (Art. 75 §3°) — data mínima de encerramento com alerta visual
- Trilha de auditoria global com timeline agrupada por dia, filtros por tipo de evento, período e usuário
- Exportação para CSV de processos, fornecedores e trilha de auditoria — respeita os filtros/busca ativos na tela
- Agenda de Vencimentos — prazos de propostas, contratos e processos parados em um único painel
- Vinculação entre processos — vínculos relacionais (renovação, aditivo, continuidade) bidirecionais e clicáveis
- Visualização Kanban por fase (Instrução / Publicado / Análise / Adjudicação / Contratação / Concluído)
- Notificações por e-mail via SMTP com editor rich text para fornecedor e equipe interna — os destinatários são os fornecedores cotados no processo (casados com o cadastro por CNPJ), não o cadastro inteiro; cada um recebe um e-mail individual, com saudação pelo nome do sócio ou simples ("Prezado fornecedor"), à escolha
- Notificações in-app — alertas de prazo, processos parados e certidões vencendo
- Resumo diário por e-mail — prazos e processos parados, enviado automaticamente pelo servidor sem depender de ninguém logado (requer SMTP configurado)
- QR Code de autenticidade em todos os documentos gerados
- Exportação PNCP — JSON estruturado no formato da API do Portal Nacional de Contratações Públicas
- Backup automático após o último usuário sair (JSON + banco de dados SQLite) com rotação configurável — o servidor continua no ar, pronto pro próximo login
- Sincronização de backup entre agentes/máquinas — mescla dados de outra instalação (soma o que é novo, revisa o que conflita) sem substituir o banco inteiro
- Cadastro de fornecedores compartilhado — Exportar/Sincronizar cadastro com os sistemas irmãos (SGCA/SGEA), casando os registros por CNPJ, com tela de revisão quando o mesmo fornecedor foi alterado dos dois lados
- Etiquetas (tags) nos processos — classificação livre com sugestão das etiquetas já usadas, exibidas nos cards e consideradas na busca
- Motor de erros com tela "Erros recentes" — falhas do servidor e do navegador dos usuários registradas em log rotativo e exibidas agrupadas em Configurações → Diagnóstico (visível só ao administrador); travamentos graves vão para o
SGCD_crash.log - Lixeira — processos e fornecedores excluídos ficam recuperáveis por 30 dias (processos incluem os arquivos anexados). Exclusão de fornecedor bloqueada se ele estiver vinculado a algum processo
- Autenticação multiusuário com hashing PBKDF2-HMAC-SHA256 e gestão de usuários pelo admin
- Relatório executivo com KPIs, gráfico de barras por status e alertas de processos parados
- Diagnóstico e correção automática de rede — verifica IP, porta 3000, perfil de rede, regra de firewall, antivírus de terceiros e outros dispositivos alcançáveis na LAN; corrige automaticamente o que estiver ao alcance do Windows (com elevação de Administrador)
- Python 3.7+
- Google Chrome ou Microsoft Edge (recomendado)
- Windows 10/11
- Nada a instalar: além da biblioteca padrão do Python, o servidor usa o waitress (servidor WSGI puro-Python), que já vem incluído na pasta
waitress/do próprio projeto — não é precisopip installnem acesso à internet para subir o sistema
Servidor sem Python instalado (ex.: Windows Server bloqueado por política de TI): o
Iniciar SGCD.batdetecta automaticamente a ausência do Python e extrai uma versão portátil (embarcável, sem instalador) incluída no próprio projeto (python-3.12.9-embed-amd64.zip) paraC:\Python312-embed\— não exige instalação nem privilégio de administrador. Isso resolve o caso comum de instaladores.exebloqueados por AppLocker/antivírus corporativo em servidores.
- Copie a pasta
SGCD/para o computador que atuará como servidor - Clique duas vezes em
Iniciar SGCD.bat - Escolha [2] Iniciar Servidor no menu que aparecer — o navegador abre automaticamente
- Faça login com as credenciais iniciais abaixo e altere a senha imediatamente
⚠️ Importante: abrir oSGCD.htmldiretamente pelo navegador (sem o servidor) impede o funcionamento do sistema. Use sempre oIniciar SGCD.bat.
| Campo | Valor |
|---|---|
| Usuário | admin |
| Senha | admin123 |
O Iniciar SGCD.bat abre um menu no terminal:
| Opção | Descrição |
|---|---|
| [1] Diagnóstico | Verifica e corrige automaticamente rede, porta e firewall (pede elevação de Administrador quando necessário) |
| [2] Iniciar Servidor | Sobe o servidor e mantém rodando continuamente — atende uso individual e em rede. Só encerra com Ctrl+C no terminal ou fechando a janela |
O sistema foi projetado para uso multiusuário em rede local (LAN): uma única máquina executa o servidor (e guarda o banco de dados) e as demais acessam pelo navegador, sem instalar nada.
Na máquina servidora (uma vez só):
- Execute
Liberar Porta SGCD.batcomo Administrador (botão direito → Executar como administrador) — cria a regra no Firewall do Windows liberando a porta 3000 para conexões de entrada - Inicie o sistema pelo
Iniciar SGCD.bate deixe a máquina ligada — ao iniciar, o console mostra o endereço de rede pronto para distribuir (Rede: http://<IP>:3000/SGCD.html)
Nas outras máquinas: basta abrir o navegador (Chrome ou Edge) no endereço do servidor:
http://192.168.x.x:3000/SGCD.html
Cada usuário faz login com sua própria conta — o servidor atende acessos simultâneos e todos enxergam os mesmos dados.
Se a conexão não funcionar, execute Diagnostico SGCD.bat (ou a opção [1] do Iniciar SGCD.bat) na máquina servidora: ele descobre o IP, verifica e corrige automaticamente firewall, perfil de rede e antivírus de terceiros. Ele também testa se há outros dispositivos alcançáveis na rede — útil para identificar isolamento de cliente (Wi-Fi) ou VLANs separadas, casos que exigem intervenção do time de TI.
Se o diagnóstico indicar tudo certo mas outra máquina ainda não conseguir acessar, é sinal de bloqueio fora do alcance do Windows (isolamento de rede corporativa, VLAN, ou firewall de outro dispositivo/roteador) — nesse caso, use o teste indicado pelo próprio diagnóstico (
pingeTest-NetConnection) a partir da outra máquina para confirmar e leve essa evidência ao TI.
⚠️ Uso restrito à rede interna. A comunicação é HTTP simples (sem criptografia de transporte) — adequado para uma LAN interna confiável, mas nunca exponha a porta do sistema à internet (redirecionamento de porta no roteador, DMZ etc.). Para acesso remoto, use a VPN institucional.
SGCD/
├── SGCD.html # Frontend — aplicação web completa
├── server.py # Servidor Python (API REST + SQLite + uploads)
├── base.css # Estilos compartilhados da família (cópia distribuída)
├── base.js # Utilitários JS compartilhados da família (cópia distribuída)
├── sgx_base.py # Infraestrutura Python compartilhada (cópia distribuída)
├── _esqueleto.sha256 # Manifesto de integridade das cópias compartilhadas
├── waitress/ # Servidor WSGI puro-Python, vendorizado (nada a instalar)
├── scripts/ # Utilitários de desenvolvimento
│ ├── lint.mjs
│ └── verificar_esqueleto.py # Confere as cópias compartilhadas contra o manifesto
├── tests/ # Suíte de testes automatizados do backend
│ ├── test_server.py
│ └── e2e/ # Testes E2E (Playwright) — navegador real de ponta a ponta
├── Iniciar SGCD.bat # Inicializa o servidor
├── python-3.12.9-embed-amd64.zip # Python portátil (fallback se não houver Python instalado)
├── get-pip.py # Usado só pelo script acima (Python embarcável não vem com pip)
├── Criar Atalho SGCD.bat # Cria atalho na área de trabalho com ícone
├── Criar Atalho SGCD.ps1 # Script PowerShell de criação do atalho
├── Diagnostico SGCD.bat # Roda o diagnóstico de rede (clique duplo)
├── Liberar Porta SGCD.bat # Cria regra de firewall para porta 3000 (Admin)
├── diagnostico.py # Script de diagnóstico de rede e firewall
├── sgcd.ico # Ícone personalizado do sistema
├── sgcd.db # Banco de dados SQLite (criado automaticamente)
├── uploads/ # Documentos anexados (criado automaticamente)
├── backups/ # Backups automáticos (criado automaticamente)
├── requirements.txt # Nada a instalar — o waitress vem junto, na pasta acima
├── README.md
├── CHANGELOG.md
└── MANUAL.html
| Documento | Descrição |
|---|---|
| Autorização de Abertura | Despacho formal para início do processo, assinado pela autoridade competente |
| Aviso de Dispensa | Aviso formatado para publicação no PNCP (Art. 75, §3º) |
| Ata de Sessão | Documento completo do processo com propostas, certidões e espaço para assinaturas |
| Mapa de Preços | Tabela comparativa de propostas recebidas |
| Justificativa de Enquadramento Legal | Declaração formal do enquadramento na hipótese de dispensa (Art. 72, III) |
| Despacho de Recusa / Desclassificação | Decisão fundamentada de recusa de proposta (Art. 59) |
| Despacho de Habilitação | Decisão formal de habilitação do fornecedor (Art. 69) |
| Despacho de Inabilitação | Decisão fundamentada de inabilitação do fornecedor (Art. 69 e 72) |
| Termo de Adjudicação | Formalização da declaração do vencedor (Art. 18, §1º) |
| Termo de Homologação | Aprovação do procedimento pela autoridade competente (Art. 71) |
| Extrato de Contrato | Extrato para publicação no Diário Oficial e PNCP (Art. 94) |
| Relatório Geral | Visão consolidada de todos os processos com filtros aplicados |
| Relatório Executivo | KPIs, gráfico por status e alertas para gestores |
Todos os documentos abrem em janela separada com botão "🖨 Imprimir / Salvar PDF".
- Lei Federal nº 14.133/2021 — Nova Lei de Licitações e Contratos Administrativos (Art. 75 — hipóteses de dispensa)
- Decreto nº 12.807/2025 — atualização dos limites de valor para dispensa (vigente desde 1º jan/2026)
- Obras e engenharia: R$ 130.984,20
- Bens e serviços: R$ 65.492,11
- IN SEGES nº 65/2021 — pesquisa de preços para aquisições de bens e contratação de serviços
- PNCP — Portal Nacional de Contratações Públicas (prazo mínimo de 3 dias úteis, Art. 75 §3°)
- Senhas armazenadas com PBKDF2-HMAC-SHA256 e salt aleatório por usuário
- Sessões server-side invalidadas automaticamente por inatividade
- Acesso à API exige token de sessão em todas as rotas (exceto login e verificação)
- Upload restrito a extensões seguras (PDF, DOCX, imagens, planilhas) com limite de 20 MB por arquivo, aplicado nos dois lados: a tela recusa antes de enviar e o servidor rejeita o que passar
- Trilha de auditoria imutável registra todas as ações com usuário e timestamp
- Verificação de integridade do banco de dados (SQLite
PRAGMA integrity_check) na inicialização - Recomenda-se uso em rede interna (LAN) apenas
| Tecnologia | Uso |
|---|---|
| HTML5 + CSS3 | Interface da aplicação, temas claro/escuro, layout responsivo |
| JavaScript puro (ES6+) | Toda a lógica de negócio, sem frameworks externos |
| Python 3 (stdlib) | Servidor local: REST API, SQLite, auth, SMTP, proxy CNPJ |
| waitress | Servidor WSGI puro-Python que atende as requisições — vendorizado na pasta waitress/, nada a instalar |
| SQLite | Armazenamento persistente dos dados (sgcd.db) |
| ReceitaWS / BrasilAPI | Consulta de CNPJ (primária + fallback automático) |
| ViaCEP | Preenchimento automático de endereço por CEP |
O sistema não exige nenhuma instalação: roda com a biblioteca padrão do Python mais o waitress, que vem vendorizado na pasta waitress/ do repositório (puro-Python, sem pip install). O frontend é HTML/CSS/JS puro, sem frameworks. Para quem for alterar o código, há um lint opcional que verifica variáveis indefinidas no JavaScript de SGCD.html:
npm install # uma vez, instala apenas o ESLint (ferramenta de dev, não é usada em produção)
npm run lintParte do código é compartilhada com os outros sistemas da família (SGCA, SGDP e SGEA): base.css, base.js e sgx_base.py são cópias distribuídas a partir de uma fonte única, que fica fora deste repositório. Editar essas cópias aqui funciona e passa no lint — mas a alteração é silenciosamente sobrescrita na próxima distribuição. Por isso o CI confere as cópias contra o manifesto _esqueleto.sha256 e quebra o build se elas divergirem:
python scripts/verificar_esqueleto.pyHá também uma suíte de testes automatizados do backend (server.py), usando só unittest da stdlib — sobe o servidor real contra um banco e uploads temporários e testa os endpoints REST (login, processos, fornecedores, auditoria, configurações, usuários, backup):
python -m unittest discover -s tests -vHá também uma suíte de testes E2E (tests/e2e/), usando Playwright — sobe o servidor real e dirige um Chromium de verdade pelo fluxo completo (login com troca de senha obrigatória, criar processo, gerar documento):
npm install
npx playwright install chromium # uma vez, baixa o navegador de teste
npm run test:e2eRoda contra um banco/uploads/backups temporários (nunca o sgcd.db real), criados e descartados automaticamente a cada execução.
Consulte o CHANGELOG.md para o histórico completo de versões e alterações.
Contribuições são bem-vindas! Veja o CONTRIBUTING.md para orientações sobre como reportar bugs, sugerir funcionalidades e enviar Pull Requests.
Distribuído sob a licença MIT. Veja LICENSE para o texto completo.
Aviso: Os dados ficam armazenados no arquivo
sgcd.dbna pasta do sistema. Faça backups regulares em Configurações → Backup de Dados e mantenha cópia dosgcd.dbem local seguro.