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.

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 devAcesse a URL impressa no terminal (geralmente http://localhost:5173).
Testes
npm run testBuild de produção
npm run buildSobre 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:
- Suba a rede local e o backend (
blockchain-lab4-dapp) — verGUIA_DE_TESTE.mdpara o passo a passo completo, incluindo a chave de criptografia que o backend agora exige no.env. - Importe as contas de teste do Anvil na MetaMask (chaves conhecidas, impressas ao subir o node).
- 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 serPoliciaFederal,CompanhiaAerea,CompanhiaRodoviaria,Cartorio,ConselhoTutelar,CasaAcolhimento,Escola,Hospital,MinisterioPublico,DefensoriaPublicaouOutroOrgaoPublico. Isso é o perfil on-chain da conta — diferente da permissão por documento do item acima. - 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 (perfilVara, 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.