Back to projects
TypeScriptPython

VerificaJus Sigilo

A full-stack dApp built with UFCG and the Paraíba State Court (TJPB) to validate confidential juvenile court documents. Institutions sign in with an Ethereum wallet and get access through on-chain profiles, while anyone can check a document's status on a public QR code page. Built with FastAPI, Solidity and Web3.py on the back end and a TypeScript front end.

Last updated:October 10, 2026
Project Preview VerificaJus Sigilo
TypeScript 98.2%CSS 1.4%HTML 0.3%

Documentation

VerificaJus Sigilo — Frontend

Frontend do Projeto 2 (Validação de Documentos Sigilosos — Vara da Infância), disciplina Aplicações e Tecnologias de Registro Distribuído, UFCG/TJPB 2026.1.

Rodando localmente

npm install
npm run dev

Acesse a URL impressa no terminal (geralmente http://localhost:5173).

Testes

npm run test

Build de produção

npm run build

Sobre esta versão

As telas chamam src/services/documentService.ts e src/services/validacaoService.ts, que falam com a API FastAPI real em http://127.0.0.1:8000/api/v1. Login por carteira é obrigatório para a área da Vara (/documentos); para apontar para outro backend, defina VITE_API_URL antes de iniciar o Vite.

Dados pessoais (nome da criança, acompanhante/guardião, destino) são cadastrados junto com o registro do documento (POST /documentos/emitir) e guardados criptografados no backend — não há mais ponte local nem gambiarra de localStorage para isso.

Acesso a esses dados pessoais na consulta pública é por permissão por documento: quem registra escolhe, no próprio formulário, quais perfis institucionais recebem acesso ampliado àquele documento específico (POST /permissoes).

Contas de demonstração

O login usa assinatura de carteira (MetaMask) contra uma rede de testes local (Anvil). Para montar uma demo com os perfis institucionais:

  1. Suba a rede local e o backend (blockchain-lab4-dapp) — ver GUIA_DE_TESTE.md para o passo a passo completo, incluindo a chave de criptografia que o backend agora exige no .env.
  2. Importe as contas de teste do Anvil na MetaMask (chaves conhecidas, impressas ao subir o node).
  3. Com a conta administradora (perfil Vara por padrão), atribua um perfil institucional às demais contas de teste com o script pronto do backend: venv/bin/python3 atribuir_perfil.py <endereco> <perfil> <nome_da_instituicao>. <perfil> pode ser PoliciaFederal, CompanhiaAerea, CompanhiaRodoviaria, Cartorio, ConselhoTutelar, CasaAcolhimento, Escola, Hospital, MinisterioPublico, DefensoriaPublica ou OutroOrgaoPublico. Isso é o perfil on-chain da conta — diferente da permissão por documento do item acima.
  4. Troque de conta na MetaMask para logar como cada perfil na aplicação.

Telas

  • / — landing pública, sem exigir login.
  • /login — conectar carteira (assinatura da mensagem de nonce); redireciona automaticamente para a área do perfil detectado on-chain.
  • /documentos — painel interno da Vara (perfil Vara, atrás de login): registrar (com upload do PDF e permissões de acesso ampliado), revogar, substituir documentos, ver QR Code.
  • /validar — consulta pública (destino do QR Code), sem exigir login: mostra status/tipo/validade para qualquer um. Conectar uma carteira institucional autorizada (Vara sempre, ou perfil com permissão concedida para aquele documento) amplia a resposta com os dados pessoais.

🙏 Agradecimentos

Agradecemos à nossa cliente Ana Talita Ferreira Marinho (ana.talita@tjpb.jus.br) por validar a aplicação.