Pular para o conteúdo

Variáveis de ambiente

Todos os exemplos ficam num único .env.example na raiz, dividido em seções por projeto e funcionalidade, com apenas as variáveis que o código lê e valores que funcionam na máquina local (Postgres e Redis do docker-compose.dev.yml, web em :3000, API em :4001). Cada seção começa com #@target <pasta>, …, que diz em qual .env ela entra.

Cada app continua lendo o .env da própria pasta. make env (scripts/copy-env.mjs) distribui as seções: cria os .env que faltam e, nos existentes, só acrescenta as variáveis novas, sem alterar valores (FORCE=1 recria tudo).

Seção do .env.example Vai para Quem lê
1. Compartilhadas: banco apps/web, apps/order-lifecycle, packages/prisma Better Auth, API e Prisma CLI
1. Compartilhadas: e-mail apps/web, apps/order-lifecycle, packages/email recuperação de senha e notificações
1. Compartilhadas: token de pagamento apps/web, apps/order-lifecycle webhook e API (valor igual nos dois)
1. Compartilhadas: Redis apps/order-lifecycle, packages/redis API
2. Web apps/web Next.js
3. Order-lifecycle apps/order-lifecycle API (dotenv no start)
4. Docs apps/docs Astro e script de capturas
5. Docker-compose . (raiz) docker-compose.yml (hosts postgres e redis)
Funcionalidade Variável Padrão local
API NEXT_PUBLIC_ORDER_LIFECYCLE_URL http://localhost:4001/api/v2
API NEXT_PUBLIC_API_URL (uploads em partes) http://localhost:4001
API ORDER_LIFECYCLE_INTERNAL_URL (SSR pela rede interna) vazio = usa a pública
Autenticação BETTER_AUTH_URL http://localhost:3000
Autenticação AUTH_SECRET dev-only-… (troque fora da sua máquina)
Autenticação BETTER_AUTH_TRUSTED_ORIGINS vazio = lista padrão
Autenticação BETTER_AUTH_LOG_LEVEL vazio = debug em dev, warn em produção
Autenticação COOKIE_DOMAIN (só produção) .moldape.com
Autenticação JWT_ISSUER, JWT_AUDIENCE http://localhost:3000, moldape_audience
Banco DATABASE_URL (Prisma do Better Auth) Postgres local
Banco PRISMA_CLIENT_LOGS, PRISMA_DEBUG_SQL vazio (info,warn,error), false
E-mail SMTP_HOST, SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PASS, SMTP_FROM Gmail, sem credenciais
Pagamento PAYMENT_BYPASS_TOKEN (webhook → API; igual ao da API) dev-only-…
Build NEXT_OUTPUT vazio (standalone no Dockerfile)
Testes e2e E2E_BASE_URL, E2E_PORT, E2E_CUSTOMER_*, E2E_ADMIN_* vazio / 3000 (ver Testes)
Legado UPLOADCARE_SECRET_KEY, NEXT_PUBLIC_UPLOADCARE_PUBLIC_KEY, NEXTAUTH_URL (reserva de BETTER_AUTH_URL) vazio
Funcionalidade Variáveis Padrão local
Servidor NODE_ENV, HOST, PORT, LOG_LEVEL, API_BASE_URL development, 0.0.0.0, 4001, info, http://localhost:4001
CORS e cookie CORS_ORIGINS, ORDER_CORS_ORIGIN (reserva), CORS_ORIGIN (legado), COOKIE_SECRET http://localhost:3000, vazio, vazio, dev-only-…
Banco DATABASE_URL, DB_CONNECTION_LIMIT, DB_CONNECTION_TIMEOUT, DB_POOL_TIMEOUT, DB_RETRY_ATTEMPTS, DB_RETRY_DELAY, PRISMA_CLIENT_LOGS, PRISMA_DEBUG_SQL Postgres local; pool com os padrões do código
Redis REDIS_HOST, REDIS_PORT, REDIS_PASSWORD, REDIS_DB, REDIS_DEFAULT_TTL, REDIS_CONNECT_TIMEOUT, REDIS_COMMAND_TIMEOUT, REDIS_URL Redis local, banco 1
Autenticação AUTH_SERVICE_URL (origem do web), JWT_SECRET, JWT_EXPIRES_IN http://localhost:3000, dev-only-…, 7d
Uploads UPLOAD_DIRECTORY, MAX_FILE_SIZE, MAX_FILES, MAX_FIELD_SIZE, MAX_FIELDS, MAX_PARTS ./uploads, 20 MB
Recursos ENABLE_SWAGGER, ENABLE_CACHING, ENABLE_REQUEST_LOGGING, ENABLE_RATE_LIMITING, RATE_LIMIT_MAX_REQUESTS, RATE_LIMIT_WINDOW_MS, HEALTH_CHECK_INTERVAL Swagger ligado; cache, log de requisições e rate limit desligados
E-mail SMTP_HOST, SMTP_PORT, SMTP_SECURE, SMTP_USER, SMTP_PASSWORD, SMTP_FROM, FRONTEND_URL Gmail, sem credenciais
Pagamento INFINITEPAY_API_URL, PAYMENT_BYPASS_TOKEN URL da InfinitePay, dev-only-…
Pacote Variáveis
@moldape/prisma DATABASE_URL, PRISMA_CLIENT_LOGS, PRISMA_DEBUG_SQL
@moldape/email SMTP_HOST, SMTP_USER, SMTP_PASS, EMAIL_FROM, SMTP_FROM, FRONTEND_URL (porta e TLS vêm do app)
@moldape/redis REDIS_HOST, REDIS_PORT, REDIS_USERNAME, REDIS_PASSWORD, REDIS_DB
@moldape/playwright-config E2E_BASE_URL, E2E_<PERFIL>_EMAIL, E2E_<PERFIL>_PASSWORD (documentadas no web)

Os demais pacotes (api-client, auth, ui, types, logger, swagger e as configs) não leem variáveis de ambiente próprias, por isso não são destino de nenhuma seção.

Funcionalidade Variável Padrão local
Site DOCS_SITE_URL https://docs.moldape.com
Site HOST, PORT (pnpm start) 0.0.0.0, 4321
Capturas CAPTURE_BASE_URL http://localhost:3000
Capturas CAPTURE_USER_EMAIL, CAPTURE_USER_PASSWORD vazio (conta de teste)
Capturas CAPTURE_DRAFT_ID, CAPTURE_ADMIN vazio, false
Capturas CHROMIUM_PATH vazio = Chromium do Playwright

Postgres (POSTGRES_*, DATABASE_URL, DB_*), Redis (REDIS_*), portas (WEB_PORT, ORDER_PORT), segredos (AUTH_SECRET, ENCRYPT_SECRET, JWT_SECRET), e-mail (SMTP_*, EMAIL_FROM) e cache remoto do Turbo (TURBO_TEAM, TURBO_TOKEN). As demais variáveis têm padrão no próprio docker-compose.yml.

Desenvolvido e documentado por
Nós Tecnologia · Desenvolvimento Criativo