API de integração desenvolvida para conectar o ERP Winthor e o WMS Kaizen, fornecendo serviços centralizados de gestão de pedidos, produtos, fábricas e separação.
- Node.js (LTS) - Runtime JavaScript
- TypeScript - Tipagem estática
- Fastify - Framework web de alta performance
- Oracle Database - ERP Winthor (conexão via Oracle Instant Client)
- PostgreSQL - WMS Kaizen
- Knex.js - Query builder SQL
- Zod - Validação de schemas e dados
- @fastify/jwt - Autenticação JWT
- @fastify/swagger - Documentação OpenAPI
- Dayjs - Manipulação de datas
- Lodash - Utilitários JavaScript
O projeto segue os princípios de Clean Architecture e SOLID:
src/
├── config/ # Configurações de banco de dados
├── http/ # Camada de apresentação (controllers, routes, middlewares)
├── repositories/ # Camada de dados (Knex repositories)
├── use-cases/ # Regras de negócio
├── types/ # Definições de tipos
└── env/ # Validação de variáveis de ambiente
- Repository Pattern - Abstração da camada de dados
- Factory Pattern - Criação de use cases
- Dependency Injection - Injeção de dependências
- DTO (Data Transfer Objects) - Tipagem de dados
- Node.js 20+ (LTS)
- Docker e Docker Compose
- Acesso aos bancos Oracle (Winthor) e PostgreSQL (Kaizen)
Crie um arquivo .env na raiz do projeto:
# Aplicação
PORT=3334
NODE_ENV=prod
# PostgreSQL (Kaizen WMS)
PG_HOST=seu_host_postgres
PG_PORT=5432
PG_NAME=seu_database
PG_USER=seu_usuario
PG_PASS=sua_senha
# Oracle Production (Winthor ERP)
ORACLE_HOST=seu_host_oracle
ORACLE_PORT=1521
ORACLE_NAME=seu_service_name
ORACLE_USER=seu_usuario
ORACLE_PASS=sua_senha
# Oracle Test
ORACLE_TEST_HOST=seu_host_oracle_test
ORACLE_TEST_PORT=1521
ORACLE_TEST_NAME=seu_service_name
ORACLE_TEST_USER=seu_usuario
ORACLE_TEST_PASS=sua_senha
# JWT Secret
JWT_SECRET=sua_chave_secreta_jwt# Instalar dependências
npm install
# Executar em modo desenvolvimento
npm run dev
# Executar em produção
npm start# Build da imagem
docker build -t api-conference .
# Executar container
docker run -p 3334:3334 --env-file .env api-conference
# Ou usar Docker Compose (desenvolvimento)
docker-compose -f docker-compose.production.yml up -d
# Ver logs
docker-compose logs -f# Fazer push
docker tag api-conference seu-usuario/api-conference:latest
docker push seu-usuario/api-conference:latest
# Fazer pull
docker pull seu-usuario/api-conference:latestApós iniciar o servidor, acesse:
- Swagger UI: http://localhost:3334/docs
- OpenAPI JSON: http://localhost:3334/docs/json
A API utiliza JWT (JSON Web Tokens) para autenticação.
POST /authenticate- Login e obtenção do tokenPOST /refresh-token- Renovação do token
Inclua o token no header das requisições:
Authorization: Bearer seu_token_aqui
- Iniciar separação
- Finalizar separação
- Cancelar separação
- Consultar status
- Buscar produtos
- Registrar avarias
- Buscar por arquivo
- CRUD completo de fábricas
- Listagem e filtros
- Cálculo de preços de produtos
- Histórico de cálculos por usuário
- Autenticação
- Busca por tag/nome
- Controle de acesso por depósito
npm run dev # Desenvolvimento com hot reload
npm start # Produção (local)
npm run start:docker # Produção (Docker)O projeto está configurado com os seguintes serviços Oracle via tnsnames.ora:
- WINT - Ambiente de produção (192.168.254.252:1521)
- TESTE - Ambiente de testes (192.168.254.239:1521)
ISC
Desenvolvido para integração Winthor ERP + Kaizen WMS