API REST para gerenciamento e monitoramento de impressões usando Node.js, Express e Prisma.
- Visão Geral
- Requisitos
- Instalação
- Configuração
- Uso
- Estrutura do Projeto
- Endpoints
- Troubleshooting
- Desenvolvimento
A PrintWatch API é um servidor REST desenvolvido em Node.js que recebe, processa e armazena dados de impressão de clientes Windows. O sistema inclui:
- Recebimento de dados de impressão via HTTP POST
- Verificação de duplicatas antes do armazenamento
- Estatísticas detalhadas por setor, usuário e impressora
- Banco de dados PostgreSQL com Prisma ORM
- Logs estruturados para auditoria
- CORS configurado para aplicações web
- Node.js 18+
- PostgreSQL 12+
- Sistema operacional: Windows, Linux ou macOS
- Node.js: Runtime JavaScript
- PostgreSQL: Banco de dados
- Cliente PrintWatch: Para envio de dados
-
Clone o repositório
git clone https://github.com/ronnybrendo/PrintWatch-api-nodejs.git cd PrintWatch-api-nodejs -
Instale as dependências
npm install
-
Configure o banco de dados
# Configure as variáveis de ambiente cp .env.example .env # Edite o arquivo .env com suas configurações
-
Execute as migrações
npx prisma migrate dev
-
Inicie o servidor
npm run dev
-
Clone o repositório
git clone https://github.com/ronnybrendo/PrintWatch-api-nodejs.git cd PrintWatch-api-nodejs -
Configure o ambiente
cp .env.example .env # Edite o arquivo .env -
Execute com Docker
docker-compose up -d
Crie um arquivo .env na raiz do projeto:
# Configurações do Servidor
PORT=3005
NODE_ENV=development
# Configurações do Banco de Dados
DATABASE_URL="postgresql://usuario:senha@localhost:5432/printwatch_db"
# Configurações de Segurança
CORS_ORIGIN=http://localhost:3000
# Configurações de Log
LOG_LEVEL=info| Variável | Descrição | Padrão |
|---|---|---|
PORT |
Porta do servidor | 3005 |
NODE_ENV |
Ambiente (development/production) | development |
DATABASE_URL |
URL de conexão PostgreSQL | - |
CORS_ORIGIN |
Origem permitida para CORS | http://localhost:3000 |
LOG_LEVEL |
Nível de log | info |
-
Instale o PostgreSQL
- Download: https://www.postgresql.org/download/
- Configure usuário e senha
-
Crie o banco de dados
CREATE DATABASE printwatch_db; CREATE USER printwatch_user WITH PASSWORD 'sua_senha'; GRANT ALL PRIVILEGES ON DATABASE printwatch_db TO printwatch_user;
-
Execute as migrações
npx prisma migrate dev
# Modo desenvolvimento (com hot reload)
npm run dev
# Modo produção
npm start
# Executar migrações
npx prisma migrate dev
# Resetar banco de dados
npx prisma migrate reset
# Abrir Prisma Studio
npx prisma studio-
Servidor rodando
curl http://localhost:${PORT}/health -
Banco de dados
npx prisma db pull
-
Logs do sistema
- Verifique os logs no console
- Logs estruturados em formato JSON
O servidor executa automaticamente:
- Ao iniciar: Conecta ao banco de dados
- Recebimento: Processa dados de impressão
- Verificação: Confirma duplicatas
- Armazenamento: Salva dados no PostgreSQL
- Estatísticas: Gera relatórios em tempo real
PrintWatch-api-nodejs/
├── src/
│ ├── central/ # Endpoints principais
│ │ ├── controller/ # Controladores
│ │ ├── router/ # Rotas
│ │ └── service/ # Lógica de negócio
│ ├── estatisticas/ # Endpoints de estatísticas
│ ├── impressoras/ # Endpoints de impressoras
│ ├── setores/ # Endpoints de setores
│ └── utils/ # Utilitários
├── prisma/
│ ├── migrations/ # Migrações do banco
│ └── schema.prisma # Schema do banco
├── server.js # Arquivo principal
├── package.json # Dependências
└── .env # Configurações
server.js: Configuração do servidor Expresssrc/central/: Endpoints para recebimento de dadossrc/estatisticas/: Relatórios e estatísticasprisma/: ORM e migrações do bancosrc/utils/: Utilitários e helpers
Arquivo: ./src/central/router/impressao.router.js
Recebe dados de impressão do cliente Windows.
Payload:
{
"data": "2025-01-30",
"hora": "10:30:15",
"usuario": "joao.silva",
"setor": "CPD",
"paginas": 5,
"copias": 2,
"impressora": "HP-LaserJet",
"nomearquivo": "documento.pdf",
"tipo": "pdf",
"nomepc": "PC-001",
"tipopage": "A4",
"cor": "COLOR",
"tamanho": "1024KB",
"ip": "192.168.1.100",
"mac": "00:11:22:33:44:55",
"empresa": 1
}Verifica se uma impressão já existe no sistema.
Resposta:
{
"status": "true"
}Arquivo: ./src/estatisticas/router/estatisticas.router.js
Retorna estatísticas das cores mais utilizadas.
Retorna estatísticas das cores mais utilizadas por setor.
Retorna estatísticas das cores mais utilizadas por usuário.
Retorna estatísticas de valores e páginas impressas.
Arquivo: ./src/impressoras/router/impressoras.router.js
Lista todas as impressoras registradas no sistema.
Arquivo: ./src/setores/router/setor.router.js
Lista todos os setores registrados no sistema.
Erro: "Cannot connect to database"
Solução:
- Verifique a URL do banco no
.env - Confirme se o PostgreSQL está rodando
- Teste a conexão manualmente
Erro: "Migration failed"
Solução:
- Verifique as permissões do banco
- Confirme se o usuário tem privilégios
- Execute
npx prisma migrate reset
Erro: "CORS policy"
Solução:
- Configure
CORS_ORIGINno.env - Verifique se a origem está correta
- Teste com
*temporariamente
Erro: "Validation failed"
Solução:
- Verifique o formato dos dados enviados
- Confirme se todos os campos obrigatórios estão presentes
- Verifique os logs de erro
Para ativar logs detalhados:
-
Modo desenvolvimento
npm run dev
-
Logs estruturados
- Todos os logs são em formato JSON
- Níveis: error, warn, info, debug
-
Prisma Studio
npx prisma studio
-
Instale o Node.js
# Versão mínima: 18 node --version -
Clone o repositório
git clone https://github.com/ronnybrendo/PrintWatch-api-nodejs.git cd PrintWatch-api-nodejsCliente Windows: https://github.com/ronnybrendo/PrintWacth-client-windows
-
Instale dependências
npm install
-
Configure o ambiente
cp .env.example .env # Edite o arquivo .env
server.js: Configuração do servidor Expresssrc/central/: Endpoints principais de recebimentosrc/estatisticas/: Relatórios e análisesprisma/schema.prisma: Modelo do banco de dadossrc/utils/: Utilitários compartilhados
# Teste de conexão com banco
npx prisma db pull
# Teste de endpoints
curl -X POST http://localhost:${PORT}/central/verifyimpression \
-H "Content-Type: application/json" \
-d '{"test": true}'
# Teste de migrações
npx prisma migrate dev-
Configure variáveis de produção
NODE_ENV=production PORT=3005 DATABASE_URL=postgresql://user:pass@host:5432/db
-
Execute migrações
npx prisma migrate deploy
-
Inicie o servidor
npm start
-
Use PM2 para produção
npm install -g pm2 pm2 start server.js --name printwatch-api
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.
- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/AmazingFeature) - Commit suas mudanças (
git commit -m 'Add some AmazingFeature') - Push para a branch (
git push origin feature/AmazingFeature) - Abra um Pull Request
Para suporte técnico ou dúvidas:
- Issues: Abra uma issue no GitHub
- Documentação: Consulte este README
- Logs: Verifique os logs do servidor
Desenvolvido por Ronnybrendo
Versão: 1.0.0
Última atualização: 2025