Skip to content
Vitor Moreira edited this page Nov 17, 2025 · 1 revision

✍️ Plataforma de assinaturas digitais - Backend

Projeto de API - Plataforma de assinatura digital baseada em microserviços, projetada para gerenciar o ciclo completo de documentos digitais com segurança, rastreabilidade e escalabilidade.

Node.js TypeScript MongoDB Redis RabbitMQ Docker Kubernetes License: MIT

📋 Índice

📚 Documentação das APIs

🎯 Sobre o Projeto

Este projeto é uma plataforma que centraliza a criação, assinatura, emissão e verificação de documentos digitais, permitindo registrar cada ação realizada sobre um documento, gerar certificados de autenticidade e consultar a validade de forma segura e transparente

🎯 Público-Alvo

  • Empresas e organizações que precisam formalizar documentos digitalmente
  • Órgãos públicos e reguladores que exigem rastreabilidade e validade jurídica
  • Profissionais jurídicos e contábeis que lidam com contratos e certificados
  • Usuários finais que precisam assinar ou verificar documentos de forma segura e confiável

✨ Características Principais

  • 🔐 Assinaturas Digitais Seguras – Emissão, assinatura e validação de documentos com autenticação JWT, criptografia SHA-256 e conformidade legal.
  • 🧩 Arquitetura de Microserviços – Estrutura modular e escalável, com comunicação assíncrona via RabbitMQ e cache Redis.
  • 📄 Gestão Completa de Documentos – Upload seguro, geração de hash, metadados e armazenamento protegido.
  • 📜 Certificados e Validação Pública – Emissão de certificados com QR Code e consulta pública de autenticidade.
  • 📊 Logs, Auditoria e Monitoramento – Rastreabilidade total de eventos, métricas com Prometheus e logging detalhado.
  • 📚 Documentação e Testes Automatizados – APIs documentadas com Swagger e cobertura de testes com Jest.
  • 🐳 Infraestrutura Moderna – Deploy com Docker, Kubernetes e banco de dados MongoDB para alta disponibilidade.

🏗️ Arquitetura do Sistema

🎨 Padrão Arquitetural

O projeto segue uma arquitetura de microserviços bem estruturada:

Fluxograma da comunicação entre microserviços

🔄 Fluxo de Dados

Fluxo de Usuário

  1. Usuário envia documento → API Gateway
  2. Auth Service valida usuário → Document Service recebe PDF
  3. Signature Service aplica assinatura → publica evento em Audit Service
  4. Certificate Service gera certificado → Validator Service valida
  5. Notification Service informa usuário sobre status

Microserviços e Interações

  • Auth Service → autentica, gera tokens (REST → Document, Signature)
  • Document Service → recebe PDFs, armazena (REST → Signature)
  • Signature Service → aplica assinatura (REST → Certificate; RabbitMQ → Audit)
  • Certificate Service → gera certificado (REST → Validator; API externa: CertificateClient)
  • Validator Service → valida documentos e certificados (REST)
  • Audit Service → registra logs de eventos RabbitMQ
  • Notification Service → envia notificações (REST; API externa: DocumentClient)

🛠 Pré-requisitos para rodar o projeto

Software / Ferramenta Versão mínima Observações
Node.js 20.x Inclui npm
npm 9.x Gerenciador de pacotes padrão do Node.js
Git 2.x Controle de versão
Yarn 3.x Alternativa ao npm
Docker 24.x Necessário para containers de backend e DBs
Kubernetes Opcional Recomendado para deploy em produção

🛠️ Instalação

# 1. Clonar o repositório
https://github.com/DEVitor0/api-assinatura-digital.git
cd api-assinatura-digital

# 2. Instalar dependências em cada microserviço
cd audit-service
command -v yarn >/dev/null 2>&1 && yarn install || npm install
# (OBS: Faça isso em cada microserviço, com excessão de infra)

# 3. Configurar variáveis de ambiente
# Cada serviço possui seu próprio arquivo .env.example.
# Copie esses arquivos e renomeie para .env dentro de cada pasta correspondente.

# Exemplo:

cp ./auth-service/.env.example ./auth-service/.env
cp ./document-service/.env.example ./document-service/.env
cp ./signature-service/.env.example ./signature-service/.env

# 4. Subir os serviços com Docker
# Execute o comando abaixo para iniciar todos os containers necessários (MongoDB, Redis, RabbitMQ, etc):

cd infra
docker compose up -d

# 5. Executar o projeto
cd [diretório]
npm run dev    # Desenvolvimento
npm start      # Produção

⚙️ Configuração do Ambiente

Cada microserviço possui uma .env, nela apenas substiua os valores conforme informado

# Exemplo de .env usada em signature-service
NODE_ENV=development
PORT=5003

MONGO_URI=mongodb://mongo-signature:27017/signature-service

REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=senhaMuitoForte1234

REDIS_TTL_SIGNATURE_SESSION=3600

SIGNATURE_TOKEN_SECRET=tokenAindaMaisForte1234
SIGNATURE_TOKEN_EXPIRES_IN=10m

SIGNATURE_SESSION_TTL=30

DOCUMENT_SERVICE_URL=http://localhost:5002

📚 Documentação da API

🔗 Endpoints Disponíveis

Após iniciar o serviço, você pode acessá-la em:

👉 http://localhost:/api/docs

Substitua <PORTA> pela porta configurada no arquivo .env de cada microserviço.
Exemplo: http://localhost:5003/api/docs

📖 Swagger UI

A documentação interativa da API está disponível através do Swagger, permitindo:

  • Visualizar todos os endpoints
  • Testar requisições diretamente
  • Ver schemas de dados
  • Entender parâmetros e respostas

🗂️ Estrutura de Pastas

📦 Projeto de Microserviços

  • 📝 audit-service
  • 🔐 auth-service
  • 📜 certificate-service
  • 📂 document-service
  • 🏗️ infra
  • 🔔 notification-service
  • ✍️ signature-service
  • ✅ validator-service

🎯 Padrão de Módulos

  • controllers: Recebe requisições e retorna respostas (Express), interage com os serviços.
  • events: Gerencia eventos internos ou externos, como filas, WebHooks ou listeners.
  • metrics: Coleta e registra métricas da aplicação, como contadores e tempos de resposta.
  • middlewares: Processa requisições antes dos controllers, incluindo autenticação, logging e tratamento de erros.
  • models: Define a estrutura de dados ou esquemas, geralmente integrados ao banco de dados.
  • routes: Define os endpoints da API e conecta URLs aos controllers correspondentes.
  • server.ts: Ponto de entrada da aplicação; configura servidor, middlewares, rotas e inicializa tudo.
  • services: Contém a lógica de negócio da aplicação ou integrações com APIs externas.
  • types: Tipos TypeScript ou interfaces para garantir tipagem consistente.
  • utils: Funções auxiliares reutilizáveis, como formatação de dados e validações.

Para uma melhor análise das entidades recomenda-se seguir esta ordem de inspeção de arquivos:
modelstypesutilsservicescontrollersroutesmiddlewareseventsmetricsserver.ts

🔧 Tecnologias Utilizadas

Node.js TypeScript Express

Docker Kubernetes MongoDB

JWT bcrypt Helmet SHA-256

Zod RabbitMQ Redis Prometheus

Jest Swagger ESLint Prettier

Multer Morgan Axios UUID

📈 Histórico de Commits

🎯 Estrutura de Commits

O projeto segue uma convenção de commits bem definida:

feat: ✨ Nova funcionalidade
fix: 🐛 Correção de bug
docs: 📚 Documentação
style: 🎨 Formatação de código
refactor: ♻️ Refatoração
test: 🧪 Testes
chore: 🔧 Configurações e dependências

👨‍💻 Autor

Vitor Moreira - Desenvolvedor

📄 Licença

Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.