Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
91 lines (84 loc) · 4.63 KB
/
Copy path.env.example
File metadata and controls
91 lines (84 loc) · 4.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# --- Tempo ---
# Confirmado contra a rede real em 2026-10-03 (ver scripts/verify-testnet.ts):
# Mainnet: https://rpc.tempo.xyz, chain ID 4217
# Testnet Moderato (dev): https://rpc.moderato.tempo.xyz, chain ID 42431
TEMPO_RPC_URL=
TEMPO_CHAIN_ID=
# Opcional - já tem default correto no código (0xB10C...000, confirmado na doc oficial
# E contra a rede real: eth_getCode retorna bytecode, getLogs decodifica TransferBlocked de verdade).
# Só preencha se a documentação publicar um endereço diferente.
TEMPO_RECEIVE_POLICY_GUARD_ADDRESS=
# Opcional - token TIP-20 cujo saldo é monitorado. Default no código: PathUSD
# (0x20c0...0000, viem/tempo Addresses.pathUsd). IMPORTANTE: Tempo não tem gas
# token nativo - eth_getBalance NÃO reflete saldo de tesouraria (confirmado
# empiricamente). Sem este campo (ou um token errado aqui), a detecção de
# "queda de saldo" não funciona.
TEMPO_WATCHED_TOKEN_ADDRESS=
# --- Twilio (canal "critical" - ligação telefônica) ---
# OPCIONAL: sem isto configurado, alertas críticos só logam no console em vez
# de travar a aplicação. Decisão de produto: ligação custa dinheiro e fica
# registrada na operadora por anos (ver SECURITY.md) - reservada pra
# severidade crítica, não é mais o canal padrão. Pode ficar "pra depois".
TWILIO_ACCOUNT_SID=
TWILIO_AUTH_TOKEN=
TWILIO_VOICE_NUMBER=
# Entrega o PIN de confirmação (ver alerts/pin.ts) por WhatsApp de verdade -
# formato E.164 ("+14155238886"), sem prefixo "whatsapp:" (adicionado pelo
# código). OPCIONAL: sem isto, o PIN é falado diretamente na ligação em vez
# de enviado por WhatsApp (corrigido 2026-10-04 - antes o prompt da ligação
# prometia um WhatsApp que esta variável, deixada vazia, nunca enviava).
# Pra testar sem número de produção aprovado: use o sandbox gratuito da
# Twilio (+14155238886) - só não use isso com dado de cliente real (ver
# ARCHITECTURE.md, "limitações conhecidas": número compartilhado/público).
TWILIO_WHATSAPP_NUMBER=
# ContentSid (HX...) de um template de WhatsApp aprovado com o PIN em {{1}} - necessário pra mensagem iniciada pelo negócio (sem ele a Twilio responde 21654)
TWILIO_WHATSAPP_CONTENT_SID=
# --- E-mail (canal "normal" - padrão, sem custo por mensagem) ---
# OPCIONAL: sem isto configurado, alertas normais só logam no console.
# Qualquer provedor SMTP funciona (Gmail SMTP pra dev, Resend, Brevo, SES...).
SMTP_HOST=
SMTP_PORT=587
SMTP_USER=
SMTP_PASS=
SMTP_FROM_ADDRESS=
# --- Privacidade ---
# Nunca gere isso manualmente em prod - usar KMS gerenciado (AWS KMS / GCP KMS).
# IMPORTANTE: nenhum KeyProvider de KMS real foi implementado ainda (gap
# documentado em ARCHITECTURE.md) - hoje este valor, se preenchido, é usado
# como chave hex de teste do LocalDevKeyProvider (ver index.ts/encryption.ts).
# Sem preencher, uma chave aleatória nova é gerada a cada boot e qualquer
# phone_mapping já salvo fica ilegível após reiniciar. Gere com:
# node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
# Nunca reuse essa chave de teste em produção com dado real.
ENCRYPTION_KEY_KMS_ARN=
# --- Banco de dados (Postgres) ---
# Schema em privacy/mapping-schema.sql. Depois de preencher, rode: npm run migrate
# Recomendação: Railway Postgres (mesmo host sugerido pra rodar a aplicação -
# DATABASE_URL já vem pronto, sem conta nova). Alternativas: Neon, Supabase.
DATABASE_URL=
# --- App ---
PORT=3000
NODE_ENV=development
# Idioma do CONTEÚDO do alerta (voz/e-mail) - "en" ou "pt". Default "en" se
# vazio/ausente (pensado pro vídeo de demo do hackathon, público internacional).
# Cliente real brasileiro: trocar pra "pt" - é config, não precisa mexer em código.
ALERT_LOCALE=en
# URL pública exposta (ex: ngrok) usada pra montar a URL exata que a Twilio assina
PUBLIC_BASE_URL=
# --- Demo (hackathon) ---
# Endereço TIP-20 observado na demo
DEMO_WATCHED_ADDRESS=
# Destinatários iniciais (modo demo sem Postgres) - só semeiam o estado na
# primeira execução; dali em diante, cadastre/edite pelo painel em /recipients
# (tela "Destinatários de alerta"). No modo com DATABASE_URL, estas env vars
# não têm efeito nenhum - cadastro é 100% pelo painel, por usuário.
# Números de telefone que recebem a ligação de alerta crítico, separados por vírgula
DEMO_ALERT_NUMBERS=
# E-mails que recebem o alerta normal, separados por vírgula
DEMO_ALERT_EMAILS=
# Nome de usuário do login de demo do painel (senha e TOTP são gerados e impressos no console a cada execução)
DEMO_DASHBOARD_USERNAME=demo
# --- Demo opcional: segundo monitor numa chain EVM genérica (prova a estratégia multi-track) ---
# Preencher para ativar o monitor da Base em paralelo ao da Tempo
DEMO_SECOND_CHAIN_ADDRESS=
BASE_RPC_URL=