Por que usar o OpenRouteX?

Pensado para ser simples de deployar e facil de operar. Sem camadas escondidas, sem lock-in com cloud provider, sem dependencia de SaaS terceiro. Tudo que o seu time precisa para operar um gateway com multi-tenant.

Pass-through total

O corpo (body) da requisicao nunca e modificado. Apenas URL, headers e query params podem ser transformados, mantendo fidelidade total com a API upstream.

Motor de variaveis por tenant

Detecta placeholders {VAR} em templates de URL, headers e query params e resolve cada valor a partir da API Key do cliente, sem expor outros tenants.

Observabilidade completa

Logs detalhados de cada requisicao (headers + body bruto, status, latencia e URL final). Filtros por servico, rota, status HTTP e periodo.

Webhook de eventos HTTP

Dispara callbacks apos cada requisicao (1xx a 5xx) em modo fire-and-forget. Possui headers customizados, grupos por status e timeout configuravel via variavel de ambiente.

Documentacao publica por servico

Cria uma pagina /doc/{slug} para cada servico com menu lateral, legenda de Path Variables, tabelas de Query Params e Headers e blocos de JSON coloridos para Request e Response.

Visao por servico e auditoria

Listagem de servicos ja filtra as rotas e API Keys com um clique. Cada servico ainda exibe o link direto para sua documentacao publica.

Rode o OpenRouteX em 1 comando

Tudo empacotado com Docker Compose. PostgreSQL, Redis, NestJS (backend), Next.js (painel) e Nginx + SSL: tudo sobre anchors em um unico arquivo para voce nao repetir variaveis.

    1. Clone o repositorio 2. Ajuste o docker-compose.yml 3. Rode docker compose up -d 4. Acesse o painel em :80 / :443
git clone https://github.com/felipelm3g/OpenRouteX
cd OpenRouteX
cp docker-compose.example.yml docker-compose.yml
nano docker-compose.yml       /* ajuste URL_PORTAL, URL_BACKEND e credenciais admin */
docker compose up -d

# Apos subir:
#  Painel admin:   https://seu-dominio/
#  Health:         https://seu-dominio/health
#  Docs publica:   https://seu-dominio-backend/doc/<slug>

Tudo incluido no docker-compose.yml

  • Next.js (App Router) + Tailwind — painel admin, login, recuperacao de senha.
  • NestJS + TypeORM — API do painel, proxy, webhook e docs publicas.
  • PostgreSQL 16 — usuarios, servicos, rotas, api keys, logs e docs.
  • Redis — cache e rate limit distribuido.
  • Nginx + SSL — terminacao HTTPS na porta 443.
  • Anchors YAML — URLs, credenciais e timeouts nao repetem.
  • Variaveis para Webhook — timeout em ms (ex: 60s = 60000).

Recursos incluidos no core

Nao sao add-ons pagos. Tudo que voce ve abaixo ja vem no repositorio base, pronto para usar.

Servicos & Rotas

Agrupa rotas em slugs unicos e mapeia method + path para upstream com opcoes por servico (mTLS, timeout, auth upstream, repasse de query).

API Keys & Multi-tenant

Autenticacao via header API-KEY com servicos permitidos, variaveis por tenant e rate limit requests/min por chave.

Variaveis em templates

Use {VAR} em Target URL, Add Headers e Add Query. Resolve apenas das variaveis da API Key; variavel faltante retorna 400.

Certificados mTLS

Anexe certificados mTLS por servico para chamar HTTPS upstreams com seguranca de ponta a ponta.

Logs, metricas e auditoria

Inspecione headers e body de request/response, URL final e latencia. Filtre por slug, path, status e data.

Usuarios e permissoes RBAC

Gerencie contas do painel, emails de recuperacao de senha e permissoes por aba do menu, com heranca logica entre modulos.

Webhook de eventos 1xx-5xx

URL + headers JSON validados; disparo apos cada finalizacao de log; grupos 1xx / 2xx / 3xx / 4xx / 5xx ou por codigo individual.

Docs publicas por servico

1 doc por servico (1:1), acessivel sem login em /doc/{slug}. Nav lateral, JSONs coloridos estilo Postman e marca automatica de rotas publicas vs protegidas.

Visao por servico

Nome do servico ja filtra a tela de Rotas; botao de chave mostra apenas as API Keys com permissao; coluna direta para a documentacao publica.

100% Docker self-hosted

Tudo (Next.js, NestJS, PostgreSQL, Redis, Nginx + SSL) roda em docker-compose com anchors para variaveis repetidas. Deploy em 1 comando.

Documentacao publica por servico

Voce cadastra a External API no painel, preenche os exemplos e ja sai com uma pagina pronta em /doc/<slug-do-servico>, sem framework, puro HTML/CSS/JS:

  • Sidebar com lista de endpoints e navegacao por ancora.
  • Legenda de Path Variables com descricao (nao mostra JSON cru).
  • Query Params e Request Headers em tabela estilo Postman.
  • Blocos de Request e Response com JSON colorido (chave azul, string laranja, numero verde).
  • Marcacao automatica de rotas publicas (🌐) vs rotas com API Key obrigatoria (🔒).
Ver no GitHub como ativar

Exemplo pratico: fluxo de entrega ao cliente

  1. Gestor cria o Serviço /eventos no painel OpenRouteX.
  2. Cadastra as rotas com upstream real (URL do TAM p. ex.) + autenticacao upstream.
  3. Cria a External API, preenche exemplos de cada rota.
  4. Envia para o cliente apenas: https://seu-openroutex/doc/eventos + uma API Key.
  5. Cliente testa pelo link, nao ve endpoints reais nem auth upstream.
  6. Qualquer erro é visivel nos logs e via webhook para SIEM.

Perguntas frequentes (FAQ)

Respostas curtas para voce decidir se o OpenRouteX encaixa no seu stack hoje.

Por que usar o OpenRouteX ao inves de expor diretamente a API upstream?

Porque o OpenRouteX centraliza autenticacao, rate limit, variaveis por tenant, logs completos, documentacao publica e webhook de eventos em um unico ponto, sem que a equipe de integracao conheca endpoints reais ou credenciais das APIs upstream.

O OpenRouteX funciona em ambiente on-premise / VPS proprio?

Sim. Ele foi projetado do zero para ser self-hosted. Basta clonar o repositorio, ajustar o docker-compose.yml e rodar docker compose up -d. Nao depende de nenhum SaaS terceiro para funcionar.

Como funciona a geracao de documentacao publica?

Dentro do painel administrativo voce cria uma External API para cada servico, preenche os exemplos de Path Variables, Query Params, Headers e JSONs de Request/Response. A pagina /doc/{slug} fica publica, sem login, pronta para compartilhar com a equipe de dev.

O webhook trava a resposta do cliente?

Nao. O disparo e feito em modo fire-and-forget (nao bloqueante) apos o log ser finalizado. O cliente recebe a resposta imediatamente; o webhook roda em paralelo com timeout configuravel via ORX_WEBHOOK_TIMEOUT_MS.

Posso usar no trabalho / em clientes / comercializar?

Sim. O projeto e open-source e foi pensado para integradores, equipes internas e consultorias. Fique a vontade para fork, deploy em massa e contribuir com pull requests no GitHub.

Pronto para sair do papel com um gateway proprio?

Clone o repositorio, rode em 1 comando e comece a centralizar as suas integracoes sem depender de terceiros. Pull requests, issues e sugestoes sao bem-vindos.