Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 99 additions & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1 +1,99 @@
IyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiMgUHJvbW9HaWZ0cyDigJQgVmFyacOhdmVpcyBkZSBhbWJpZW50ZSBkbyBGUk9OVEVORAojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBUb2RhcyBhcyB2YXJzIFZJVEVfKiBzw6NvIElOTElORUFEQVMgbm8gYnVuZGxlIGRvIGJyb3dzZXIgZHVyYW50ZSBvIGJ1aWxkLgojIE5VTkNBIGNvbG9xdWUgc2VjcmV0cyBhcXVpIChzZXJ2aWNlIHJvbGUga2V5cywgSldUcyBzZW0gZXhwaXJhw6fDo28sIGV0YykuCiMgQXMga2V5cyAicHVibGlzaGFibGUiIC8gImFub24iIHPDo28gZGVzZW5oYWRhcyBwcmEgc2VyZW0gZXhwb3N0YXMgbm8gY2xpZW50LgojCiMgQ29waWUgZXNzZSBhcnF1aXZvIHBhcmEgLmVudi5sb2NhbCBlIHByZWVuY2hhIGNvbSBzZXVzIHZhbG9yZXMgcmVhaXMuCiMgLmVudi5sb2NhbCBOw4NPIGVudHJhIG5vIGdpdCAoasOhIGVzdMOhIGVtIC5naXRpZ25vcmUpLgojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIFNVUEFCQVNFIChvYnJpZ2F0w7NyaWFzKQojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBEYXNoYm9hcmQ6IGh0dHBzOi8vc3VwYWJhc2UuY29tL2Rhc2hib2FyZC9wcm9qZWN0Lzxkb3Vmc3hxbGZqeXV2eHVlenBsbj4vc2V0dGluZ3MvYXBpCgojIFVSTCBkbyBwcm9qZXRvIFN1cGFiYXNlIChleDogaHR0cHM6Ly9hYmNkZWZnaC5zdXBhYmFzZS5jbykKVklURV9TVVBBQkFTRV9VUkw9aHR0cHM6Ly9kb3Vmc3hxbGZqeXV2eHVlenBsbi5zdXBhYmFzZS5jbwoKIyBJRCBkbyBwcm9qZXRvIFN1cGFiYXNlIChleDogYWJjZGVmZ2gpClZJVEVfU1VQQUJBU0VfUFJPSkVDVF9JRD1kb3Vmc3hxbGZqeXV2eHVlenBsbgoKIyBDaGF2ZSBQVUJMSVNIQUJMRSAoYW5vbiBrZXkpIOKAlCBzZWd1cmEgbm8gY2xpZW50CiMg4pqg77iPICBOVU5DQSBjb2xvcXVlIGEga2V5IHJlYWwgYXF1aSDigJQgZXN0ZSBhcnF1aXZvIMOpIHDDumJsaWNvIG5vIEdpdEh1Yi4KIyBPYnRlbmhhIGEga2V5IGVtOiBEYXNoYm9hcmQg4oaSIFNldHRpbmdzIOKGkiBBUEkg4oaSIFByb2plY3QgQVBJIGtleXMg4oaSIGFub24gcHVibGljClZJVEVfU1VQQUJBU0VfUFVCTElTSEFCTEVfS0VZPXNiX3B1Ymxpc2hhYmxlXzx5b3VyLWFub24ta2V5LWhlcmU+CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBPQlNFUlZBQklMSURBREUg4oCUIEdsaXRjaFRpcCAvIFNlbnRyeSAob3BjaW9uYWwsIHJlY29tZW5kYWRvIGVtIHByb2R1w6fDo28pCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQojIEdsaXRjaFRpcCDDqSBjb21wYXTDrXZlbCBjb20gU0RLIFNlbnRyeSDigJQgcG9kZSB1c2FyIERTTiBHbGl0Y2hUaXAgYXF1aS4KIyBEU04gw6kgcMO6YmxpY28gcG9yIGRlc2lnbiAoU2VudHJ5L0dsaXRjaFRpcCBmb3JhbSBkZXNlbmhhZG9zIHByYSBEU04gbm8gY2xpZW50KS4KIyBTZW0gZXNzYXMgdmFycywgaW5pdCDDqSBuby1vcCAobsOjbyBxdWVicmEgZGV2IGxvY2FsKS4KCiMgRFNOIGRvIHByb2pldG8gbm8gR2xpdGNoVGlwIC8gU2VudHJ5CiMgT25kZSBwZWdhcjogR2xpdGNoVGlwIOKGkiBwcm9qZXRvIOKGkiBTZXR0aW5ncyDihpIgQ2xpZW50IEtleXMgKERTTikKIyBGb3JtYXRvOiBodHRwczovLzxjaGF2ZT5APGhvc3Q+Lzxwcm9qZWN0LWlkPgojIEV4ZW1wbG8gR2xpdGNoVGlwOiBodHRwczovL2FiYzEyM0BlcnJvcy5hdG9taWNhYnIuY29tLmJyLzQKVklURV9TRU5UUllfRFNOPQoKIyBBbWJpZW50ZSBsw7NnaWNvIHByYSBzZXBhcmFyIGVycm9zIChwcm9kdWN0aW9uLCBzdGFnaW5nLCBwcmV2aWV3LCBkZXZlbG9wbWVudCkKIyBEZWZhdWx0OiB1c2EgaW1wb3J0Lm1ldGEuZW52Lk1PREUgKD0gJ3Byb2R1Y3Rpb24nIG91ICdkZXZlbG9wbWVudCcpClZJVEVfU0VOVFJZX0VOVklST05NRU5UPQoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgVkVSQ0VMIChpbmpldGFkYXMgYXV0b21hdGljYW1lbnRlIHBlbG8gVmVyY2VsIOKAlCBuw6NvIHByZWVuY2hlciBtYW51YWxtZW50ZSkKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiMgRG9jdW1lbnRhw6fDo286IGh0dHBzOi8vdmVyY2VsLmNvbS9kb2NzL3Byb2plY3RzL2Vudmlyb25tZW50LXZhcmlhYmxlcy9zeXN0ZW0tZW52aXJvbm1lbnQtdmFyaWFibGVzCgojIFNIQSBkbyBjb21taXQgZG8gZGVwbG95IOKAlCB1c2FkbyBjb21vIHJlbGVhc2UgdGFnIG5vIEdsaXRjaFRpcAojIFZlcmNlbCBpbmpldGEgYXV0b21hdGljYW1lbnRlLiBFbSBkZXYgbG9jYWwsIGZpY2EgdmF6aW8uCiMgVklURV9WRVJDRUxfR0lUX0NPTU1JVF9TSEE9CgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBGRUFUVVJFIEZMQUdTIChvcGNpb25haXMpCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBIYWJpbGl0YSBiYW5uZXJzL2F2aXNvcyBkZSBpbmZyYSBwYXJhIHVzdcOhcmlvcyBjb20gcGFwZWwgJ2RldicKIyBWYWxvcmVzOiAndHJ1ZScgfCAnZmFsc2UnIChkZWZhdWx0OiAnZmFsc2UnKQojIFZJVEVfU0hPV19ERVZfSU5GUkFfTUVTU0FHRVM9ZmFsc2UKCiMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQojIFNFUlZFUiAvIEVER0UgU0VDUkVUUyAoTlVOQ0EgZXhwb3Igbm8gZnJvbnRlbmQhKQojID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIyBFc3NhcyB2YXJpw6F2ZWlzIGRldmVtIHNlciBjb25maWd1cmFkYXMgbm8gU3VwYWJhc2UgKEVkZ2UgRnVuY3Rpb25zIFNlY3JldHMpCiMgZSBubyBHaXRIdWIgQWN0aW9ucyAoU2VjcmV0cykuCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKIyBUb2tlbiBwYXJhIGxpbXBlemEgZGUgZGFkb3MgZW0gdGVzdGVzIEUyRQpFMkVfQ0xFQU5VUF9UT0tFTj0KRTJFX0NMRUFOVVBfQUxMT1dFRF9FTUFJTFM9CgojIFNlY3JldHMgcGFyYSBhdXRvcml6YcOnw6NvIGRlIENyb25zIGUgRGVzcGFjaG8gZGUgV2ViaG9va3MKQ09OTkVDVElPTlNfQVVUT19URVNUX1NFQ1JFVD0KV0VCSE9PS19ESVNQQVRDSEVSX1NFQ1JFVD0KCiMgQ29uZmlndXJhw6fDtWVzIGRvIEltYWdlIFByb3h5CklNQUdFX1BST1hZX0FMTE9XX0xPQ0FMSE9TVD1mYWxzZQpJTUFHRV9QUk9YWV9NQVhfQllURVM9NTI0Mjg4MAoKIyBDaGF2ZSBkZSBBUEkgcGFyYSBzZXJ2acOnb3MgZGUgSUEgKExvdmFibGUgQUkgR2F0ZXdheSkKTE9WQUJMRV9BUElfS0VZPQoKIyBDcmVkZW5jaWFpcyBkZSBJbnRlZ3Jhw6fDo28gKEV4dGVybmFsIENSTSAvIERCKQpFWFRFUk5BTF9DUk1fVVJMPQpFWFRFUk5BTF9DUk1fU0VSVklDRV9ST0xFX0tFWT0KRVhURVJOQUxfQ1JNX0FOT05fS0VZPQoKIyBCYW5jbyBleHRlcm5vIGRlIHByb2R1dG9zIChQcm9tb2JyaW5kIC8gUG9zdGdyZXMpCkVYVEVSTkFMX1BST01PQlJJTkRfVVJMPQpFWFRFUk5BTF9QUk9NT0JSSU5EX1NFUlZJQ0VfUk9MRV9LRVk9CkVYVEVSTkFMX1BST01PQlJJTkRfQU5PTl9LRVk9CgojIEFsaWFzZXMgbGVnYWRvcyAob3BjaW9uYWlzLCB1c2Ugb3Mgbm9tZXMgY2Fuw7RuaWNvcyBhY2ltYSkKRVhURVJOQUxfU1VQQUJBU0VfVVJMPQpFWFRFUk5BTF9TVVBBQkFTRV9TRVJWSUNFX0tFWT0KRVhURVJOQUxfU1VQQUJBU0VfQU5PTl9LRVk9CkNSTV9TVVBBQkFTRV9VUkw9CkNSTV9TVVBBQkFTRV9TRVJWSUNFX0tFWT0K
# ============================================================================
# PromoGifts — Variáveis de ambiente do FRONTEND
# ============================================================================
# Todas as vars VITE_* são INLINEADAS no bundle do browser durante o build.
# NUNCA coloque secrets aqui (service role keys, JWTs sem expiração, etc).
# As keys "publishable" / "anon" são desenhadas pra serem expostas no client.
#
# Copie esse arquivo para .env.local e preencha com seus valores reais.
# .env.local NÃO entra no git (já está em .gitignore).
# ============================================================================

# ----------------------------------------------------------------------------
# SUPABASE (obrigatórias)
# ----------------------------------------------------------------------------
# Dashboard: https://supabase.com/dashboard/project/<doufsxqlfjyuvxuezpln>/settings/api

# URL do projeto Supabase (ex: https://abcdefgh.supabase.co)
VITE_SUPABASE_URL=https://doufsxqlfjyuvxuezpln.supabase.co

# ID do projeto Supabase (ex: abcdefgh)
VITE_SUPABASE_PROJECT_ID=doufsxqlfjyuvxuezpln

# Chave PUBLISHABLE (anon key) — segura no client
# ⚠️ NUNCA coloque a key real aqui — este arquivo é público no GitHub.
# Obtenha a key em: Dashboard → Settings → API → Project API keys → anon public
VITE_SUPABASE_PUBLISHABLE_KEY=sb_publishable_<your-anon-key-here>

# ----------------------------------------------------------------------------
# OBSERVABILIDADE — GlitchTip / Sentry (opcional, recomendado em produção)
# ----------------------------------------------------------------------------
# GlitchTip é compatível com SDK Sentry — pode usar DSN GlitchTip aqui.
# DSN é público por design (Sentry/GlitchTip foram desenhados pra DSN no client).
# Sem essas vars, init é no-op (não quebra dev local).

# DSN do projeto no GlitchTip / Sentry
# Onde pegar: GlitchTip → projeto → Settings → Client Keys (DSN)
# Formato: https://<chave>@<host>/<project-id>
# Exemplo GlitchTip: https://abc123@erros.atomicabr.com.br/4
VITE_SENTRY_DSN=

# Ambiente lógico pra separar erros (production, staging, preview, development)
# Default: usa import.meta.env.MODE (= 'production' ou 'development')
VITE_SENTRY_ENVIRONMENT=

# ----------------------------------------------------------------------------
# VERCEL (injetadas automaticamente pelo Vercel — não preencher manualmente)
# ----------------------------------------------------------------------------
# Documentação: https://vercel.com/docs/projects/environment-variables/system-environment-variables

# SHA do commit do deploy — usado como release tag no GlitchTip
# Vercel injeta automaticamente. Em dev local, fica vazio.
# VITE_VERCEL_GIT_COMMIT_SHA=

# ----------------------------------------------------------------------------
# FEATURE FLAGS (opcionais)
# ----------------------------------------------------------------------------

# Habilita banners/avisos de infra para usuários com papel 'dev'
# Valores: 'true' | 'false' (default: 'false')
# VITE_SHOW_DEV_INFRA_MESSAGES=false

# ============================================================================
# SERVER / EDGE SECRETS (NUNCA expor no frontend!)
# ============================================================================
# Essas variáveis devem ser configuradas no Supabase (Edge Functions Secrets)
# e no GitHub Actions (Secrets).
# ----------------------------------------------------------------------------

# Token para limpeza de dados em testes E2E
E2E_CLEANUP_TOKEN=
E2E_CLEANUP_ALLOWED_EMAILS=

# Secrets para autorização de Crons e Despacho de Webhooks
CONNECTIONS_AUTO_TEST_SECRET=
WEBHOOK_DISPATCHER_SECRET=

# Configurações do Image Proxy
IMAGE_PROXY_ALLOW_LOCALHOST=false
IMAGE_PROXY_MAX_BYTES=5242880

# Chave de API para serviços de IA (Lovable AI Gateway)
LOVABLE_API_KEY=

# Credenciais de Integração (External CRM / DB)
EXTERNAL_CRM_URL=
EXTERNAL_CRM_SERVICE_ROLE_KEY=
EXTERNAL_CRM_ANON_KEY=

# Banco externo de produtos (Promobrind / Postgres)
EXTERNAL_PROMOBRIND_URL=
EXTERNAL_PROMOBRIND_SERVICE_ROLE_KEY=
EXTERNAL_PROMOBRIND_ANON_KEY=

# Aliases legados (opcionais, use os nomes canônicos acima)
EXTERNAL_SUPABASE_URL=
EXTERNAL_SUPABASE_SERVICE_KEY=
EXTERNAL_SUPABASE_ANON_KEY=
CRM_SUPABASE_URL=
CRM_SUPABASE_SERVICE_KEY=
Loading