Rafael Borges
Voltar para projetos

Gestão Documental

Plataforma de assinatura eletrônica de documentos

Testar demo ao vivo

A demo cobre só o frontend de preparação (upload, signatários, posicionamento de campos) — o backend de envio e coleta de assinatura não está exposto nela.

Contexto

Processos de assinatura eletrônica geralmente dependem de plataformas de terceiros (DocuSign, Clicksign) cobradas por assinatura. A proposta era construir uma solução própria, ponta a ponta: da preparação do documento à certificação digital do PDF final assinado.

Desafio

Cobrir o fluxo inteiro: renderizar o PDF e posicionar campos por signatário no frontend; notificar cada signatário por e-mail com autenticação em duas etapas; capturar a assinatura com uma trilha de auditoria defensável (IP, geolocalização, user agent, consentimento); e certificar digitalmente o documento final de forma que futuras edições fiquem bloqueadas.

Abordagem

  • Frontend em Next.js/TypeScript: upload local do PDF (renderizado com react-pdf), cadastro de signatários por e-mail e posicionamento visual de campos (assinatura, rubrica, texto, CPF/CNPJ, data, checkbox) vinculados a cada um.
  • Backend em PHP 8.3/Laravel 11 com arquitetura modular por domínio (SignatureRequest, Envelope, Signatory, Document, Signature). Cada signatário recebe um token único e um link individual de assinatura, notificado via Laravel Mail em fila (Jobs com retry), com rastreio de abertura do e-mail e notificação sequencial opcional entre signatários.
  • Acesso ao link protegido por código OTP por e-mail (2FA) antes da assinatura. Captura via canvas de desenho (signature_pad.js) ou geração automática de assinatura estilizada, com trilha de auditoria completa — IP, geolocalização por IP, user agent, URL da requisição e registro de consentimento aos termos.
  • Ao concluir todos os signatários, um Job compõe o PDF final (SetaPDF-Core), insere um manifesto de auditoria com QR code de verificação, certifica digitalmente o documento (SetaPDF-Signer, padrão PAdES/CMS, nível "no changes allowed") com carimbo de tempo RFC3161, gera um hash SHA-256 e versiona o arquivo em storage (local ou S3).

Resultado

Plataforma de assinatura eletrônica ponta a ponta construída e funcional, cobrindo da preparação do documento à certificação digital do PDF final, sem depender de um gateway terceirizado. A demo pública expõe apenas o frontend de preparação; o backend completo não está publicamente acessível.

Stack técnica

Next.jsTypeScriptreact-pdfpdf-libPHP/LaravelSetaPDF