Projeto · 2024 → 2025

Publicidade da Cidade

Compliance de fornecedores para agências que atendem prefeituras

Portal que controla certidões fiscais, trabalhistas e cadastrais de centenas de fornecedores por cliente, consulta órgãos do governo automaticamente e publica tudo num portal de transparência conforme a Lei 12.232/2010.

Telas

Painel de risco: vencidos e vencendo
Painel de risco: vencidos e vencendo
Documentos de um fornecedor
Documentos de um fornecedor
Consulta automática de certidão
Consulta automática de certidão
Portal público de transparência
Portal público de transparência

O que faz

  • Cadastro de fornecedores e veículos com atributos dinâmicos (EAV)
  • Upload, versionamento, aprovação e validade de documentos
  • Consulta automática de CND, CNDT, FGTS, CEIS, SEFAZ, TCU e JUCESP
  • Renovação proativa: job diário re-consulta certidões prestes a vencer
  • Fornecedor envia documento por link mágico, sem criar conta
  • Portal público por prefeitura com ISR e transparência financeira

Stack

  • Python 3.11
  • Django 5.2
  • Graphene
  • GraphQL
  • PostgreSQL
  • django-tenants
  • Celery
  • Redis
  • AWS S3
  • React 19
  • MUI 7
  • Apollo Client
  • Next.js 15
  • Tailwind v4
  • GitHub Actions
  • ECS Fargate
  • Vercel

Backend, dashboard e portal público

Desafios técnicos

Onde o problema resistiu.

Schema por prefeitura

django-tenants com resolução pelo header X-Tenant-ID, Celery tenant-aware, S3 com prefixo por tenant e middleware de subdomínio no Next.js.

Certidões assíncronas

Cada órgão tem API, formato e campo de validade diferentes. Tudo normalizado em um ciclo pending → querying → success/error, com status derivado via dataloaders.

Filtros dinâmicos sobre EAV

Atributos configuráveis compilados em Exists() por atributo, gerando filtros em tempo de execução no dashboard e no portal.

GraphQL no padrão Saleor

Conexões Relay, dataloaders por módulo, permissões declarativas, upload multipart e sistema de plugins encadeados.

Upload anônimo seguro

Token de uso único, validação de tipo, tamanho e datas, quarentena até aprovação. Falha de e-mail nunca bloqueia a operação.

Operação enxuta

Worker Celery com beat embutido e limite de memória para rodar em infra pequena, com pipeline alternativo para ECS Fargate.