magom_spooler
v1.0.0
Published
Servidor de Impressoras Virtuais em Rede
Maintainers
Readme
Mega Spooler
Servidor de impressoras virtuais em rede. Gerencia fila de impressão, descobre impressoras na rede local e fornece API REST + dashboard web em tempo real.
Stack
- Runtime: Node.js 20+
- Framework: Fastify
- Fila: Bull + Redis
- Frontend: Vanilla JS + Tailwind CSS
- DB: SQLite (dev) / SQLite (prod com Docker)
- Logging: Pino
Desenvolvimento
# Instalar dependências
npm install
# Criar banco SQLite e rodar migrations
npx prisma migrate dev
# Iniciar em modo dev (com hot reload)
npm run devAcesse http://localhost:3000
Produção (Docker)
cd docker
docker compose up -d --buildAcesse http://localhost:3000
Produção (Node.js direto)
npm install --production
npx prisma migrate deploy
npm run build
npm startAPI Endpoints
| Método | Rota | Descrição |
|--------|------|-----------|
| GET | /health | Health check |
| GET | /api/printers | Listar impressoras |
| GET | /api/printers/:id/status | Status detalhado |
| POST | /api/printers | Registrar impressora |
| DELETE | /api/printers/:id | Remover impressora |
| POST | /api/jobs/create | Enviar job (multipart) |
| GET | /api/jobs | Listar jobs |
| GET | /api/jobs/:id | Detalhes do job |
| DELETE | /api/jobs/:id | Cancelar job |
| GET | /api/dashboard | Métricas gerais |
| WS | /ws | WebSocket para eventos |
Cliente cURL
curl -X POST http://localhost:3000/api/jobs/create \
-F "[email protected]" \
-F "printerId=ID_DA_IMPRESSORA" \
-F "clientName=MeuPC"Variáveis de Ambiente
Copie .env.example para .env e configure:
PORT- Porta do servidor (padrão: 3000)DATABASE_URL- Caminho do SQLiteREDIS_URL- URL do RedisUSE_REDIS- Habilitar Redis (true/false)LOG_LEVEL- Nível de log (info/warn/error)
