-
Notifications
You must be signed in to change notification settings - Fork 2
Geral
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.
- 🎯 Sobre o Projeto
- 🏗️ Arquitetura do Sistema
- 🛠 Pré-requisitos e Instalação
- 🚀 Tecnologias Utilizadas
- 📚 Documentação da API
- 🗂️ Estrutura de Pastas
- 📈 Histórico de Commits
- 👨💻 Autor
- 📄 Licença
- 🛡️ Auth Service
- 📄 Document Service
- ✍️ Signature Service
- 📜 Certificate Service
- 🔍 Validator Service
- 📊 Audit Service
- 📧 Notification Service
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
- 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
- 🔐 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.
O projeto segue uma arquitetura de microserviços bem estruturada:

- Usuário envia documento → API Gateway
- Auth Service valida usuário → Document Service recebe PDF
- Signature Service aplica assinatura → publica evento em Audit Service
- Certificate Service gera certificado → Validator Service valida
- Notification Service informa usuário sobre status
- 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)
| Software / Ferramenta | Versão mínima | Observações |
|---|---|---|
| 20.x | Inclui npm | |
| 9.x | Gerenciador de pacotes padrão do Node.js | |
| 2.x | Controle de versão | |
| 3.x | Alternativa ao npm | |
| 24.x | Necessário para containers de backend e DBs | |
| Opcional | Recomendado para deploy em produçã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çãoCada 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
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
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
📦 Projeto de Microserviços
- 📝 audit-service
- 🔐 auth-service
- 📜 certificate-service
- 📂 document-service
- 🏗️ infra
- 🔔 notification-service
- ✍️ signature-service
- ✅ validator-service
- 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:
models → types → utils → services → controllers → routes → middlewares → events → metrics → server.ts
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
Vitor Moreira - Desenvolvedor
- 📧 Email: [email protected]
- 🔗 LinkedIn: www.linkedin.com/in/devitor0
- 🐙 GitHub: https://github.com/DEVitor0
Este projeto está sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.