Pular para o conteúdo principal

Variáveis de ambiente

Este projeto lê variáveis de ambiente em:

  • .env.local (recomendado localmente)
  • .env (opcional)
  • variáveis passadas em runtime (ex.: Docker/ambiente do servidor)

O arquivo .env.example contém um conjunto completo com comentários. Abaixo está um resumo por “família” de configuração.

API base (principal)

A base do backend é montada por src/config/api.ts:

  • prioridade no servidor: BACKEND_API_URL
  • fallback no browser (e também servidor se BACKEND não existir): NEXT_PUBLIC_API_URL
  • fallback final: DEFAULT_API_BASE_URL (hoje: https://defaultcrmapi.gevtech.com.br/api)

Desenvolvimento (npm run dev)

O arquivo .env.development (versionado) define automaticamente:

NEXT_PUBLIC_API_URL=http://localhost:3001/api
BACKEND_API_URL=http://localhost:3001/api

Assim, browser e proxies server-side (/api/auth/*, SSR) apontam para o backend local.

  • Ajuste a porta em .env.development se o API local usar outra.
  • Para testar contra produção no dev: npm run dev:prod-api ou copie .env.development.local.example.env.development.local.

Formato aceito:

  • https://host/api (recomendado)
  • https://host/api/ (normalizado — remove a barra final)
  • http://localhost:3000 (sem /api — o código adiciona quando necessário em rotas específicas)

Exemplo (local — já coberto por .env.development ao rodar npm run dev):

NEXT_PUBLIC_API_URL="http://localhost:3001/api"
BACKEND_API_URL="http://localhost:3001/api"

Exemplo (produção, server-side com runtime):

BACKEND_API_URL="https://defaultcrmapi.gevtech.com.br/api"

Tenant / Login

  • NEXT_PUBLIC_TENANT_SLUG: valor default preenchido no formulário de login (quando aplicável).

Timeouts do proxy de login (server-side)

A rota src/app/api/auth/login/route.ts faz proxy para o backend usando undici e expõe timeouts via env:

  • BACKEND_FETCH_CONNECT_TIMEOUT_MS (default: 15000)
  • BACKEND_FETCH_HEADERS_TIMEOUT_MS (default: 60000)
  • BACKEND_FETCH_BODY_TIMEOUT_MS (default: 60000)

Use quando houver redes lentas/instáveis e erros como UND_ERR_HEADERS_TIMEOUT.

Criptografia no cliente (opcional)

  • NEXT_PUBLIC_ENC_SALT: salt usado em src/models/utils/encryption.ts.
    • Se não definido, usa fallback "crm_front_v1".

Simulador de taxas (HTML “modelo”)

  • NEXT_PUBLIC_MODELO_TAXAS_HTML_URL: URL absoluta para um HTML externo (ex.: legado).
    • Se vazio, o app usa um modelo interno (arquivo em public/).
  • NEXT_PUBLIC_MODELO_TAXAS_NOME_EMPRESA: nome exibido no cabeçalho do modelo (white label).

Cadastro de usuário (precificação)

  • NEXT_PUBLIC_USUARIO_PRECIFICACAO
    • Valores esperados: "mdr" (altera etapa/campos do wizard) ou vazio (padrão).

Proxies para legado (PHP) — server-side (recomendado)

Algumas áreas integram com endpoints PHP legados. Em produção, prefira configurar as URLs no servidor/contêiner e consumir via rotas /api/* do Next, para evitar CORS e manter cookies/sessão sob controle.

Terminais locais

Rotas:

  • GET /api/terminais/locais (proxy para listar_terminais_locais.php)
  • POST /api/terminais/cadastrar
  • POST /api/terminais/usuarios-vincular

Variáveis (server-side):

  • TERMINAIS_LISTAR_URL
  • TERMINAIS_CADASTRAR_URL
  • TERMINAIS_USUARIOS_VINCULAR_URL

Em NODE_ENV=development, se TERMINAIS_LISTAR_URL não estiver configurada, /api/terminais/locais devolve mocks.

Gestão de taxas padrão

Rotas:

  • GET /api/gestao-taxas-padrao (action listar_taxas)
  • POST /api/gestao-taxas-padrao (atualização)

Variável (server-side):

  • GESTAO_TAXAS_PADRAO_URL

Em NODE_ENV=development, sem URL configurada, a rota devolve mocks.

Integração legado (PHP) direto no browser — NEXT_PUBLIC_* (opcional)

Para alguns serviços existe alternativa direta no client (normalmente requer cookies/sessão válidos e CORS liberado no legado):

  • NEXT_PUBLIC_TERMINAIS_LISTAR_URL
  • NEXT_PUBLIC_TERMINAIS_CADASTRAR_URL
  • NEXT_PUBLIC_TERMINAIS_USUARIOS_VINCULAR_URL
  • NEXT_PUBLIC_GESTAO_TAXAS_PADRAO_URL

Quando possível, prefira o proxy server-side (TERMINAIS_*_URL, GESTAO_TAXAS_PADRAO_URL).

Mocks no client (forçar)

Alguns hooks permitem forçar mocks por env:

  • NEXT_PUBLIC_USE_TERMINAIS_MOCK="true"
  • NEXT_PUBLIC_USE_DASHBOARD_MOCK="true"