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) |
apps/web
Seção intitulada “apps/web”| 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 |
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 |
apps/order-lifecycle
Seção intitulada “apps/order-lifecycle”| 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 |
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-… |
packages/*
Seção intitulada “packages/*”| 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.
apps/docs
Seção intitulada “apps/docs”| 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 |
Raiz (docker-compose.yml)
Seção intitulada “Raiz (docker-compose.yml)”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 porNós Tecnologia · Desenvolvimento Criativo

