Senda Backend
Variables de entorno Variables del .env de senda-backend. Nunca se commitean valores reales.
Nunca se commitean valores reales. Las variables sin valor por defecto se completan con tus propias credenciales. Lista completa en .env.example del backend.
CUSTODY_MASTER_SECRET, FILE_VAULT_SECRET y STELLAR_SECRET_KEY deben ser tres valores distintos entre sí.
Variable Obligatoria Descripción PORTNo Puerto del servidor (por defecto 3000) NODE_ENVNo Entorno (development en .env.example) WHATSAPP_TOKENSí Token de acceso de WhatsApp Cloud API WHATSAPP_PHONE_NUMBER_IDSí ID del número de teléfono de WhatsApp Business WHATSAPP_BUSINESS_ACCOUNT_IDNo ID de la cuenta de WhatsApp Business (está en .env.example; el runtime no la lee) WHATSAPP_API_VERSIONNo Versión de la API (por defecto v22.0) VERIFY_TOKENSí Token de verificación del webhook. En .env.example es senda-verify-token. Si está vacío, GET /webhook responde 403 WHATSAPP_APP_SECRETSí App Secret de Meta; firma X-Hub-Signature-256 del webhook. Sin este valor POST /webhook responde 403 WHATSAPP_CLICK_TO_CHATNo Número para el wa.me de regreso desde el alta web PUBLIC_BASE_URLNo URL pública del backend; Render setea RENDER_EXTERNAL_URL solo. Construye /media/welcome.mp4 si no hay WELCOME_VIDEO_URL WELCOME_VIDEO_URLNo URL absoluta del video de bienvenida. Si no está, usamos PUBLIC_BASE_URL o RENDER_EXTERNAL_URL + /media/welcome.mp4
Variable Obligatoria Descripción STELLAR_NETWORKSí Red de Stellar (testnet) STELLAR_HORIZON_URLSí Horizon (https://horizon-testnet.stellar.org) STELLAR_RPC_URLSí RPC de Soroban (https://soroban-testnet.stellar.org) STELLAR_FRIENDBOT_URLSí (testnet) Friendbot (https://friendbot.stellar.org) STELLAR_NETWORK_PASSPHRASESí Passphrase de la red (Test SDF Network ; September 2015) STELLAR_CONTRACT_IDNo ID de SendaContract. Sin este valor no registramos el crédito en el contrato Soroban STELLAR_PUBLIC_KEYNo Clave pública de la cuenta operativa (está en .env.example; el runtime firma con STELLAR_SECRET_KEY) STELLAR_SECRET_KEYSí Clave secreta de la cuenta operativa STELLAR_TREASURY_SECRET_KEYNo Tesorería pooled. Si falta, usa STELLAR_SECRET_KEY USDC_SAC_CONTRACT_IDSí Stellar Asset Contract de USDC (CDT2MY3QNV2RT2XULQWWXX2JELUWRWNXNKONCYG5MTIGZM7G5S2QNNGB) USDC_CODESí Código del activo (USDC) USDC_ISSUERSí Emisor del USDC (GBBD47IF6LWK7P7MDEVSCWR7DPUWV3NY3DTQEVFL4NAT4AQH3ZLLFLA5) ENABLE_PUBLIC_CREDITNo El crédito automático solo corre en testnet, salvo que esta variable sea true en red public
Variable Obligatoria Descripción CUSTODY_MASTER_SECRETSí Secreto de la custodia invisible (SEP-30, fallback). Distinto de STELLAR_SECRET_KEY FILE_VAULT_SECRETSí Cifrado en reposo de códigos de retiro y wallets legado. Distinto de los otros dos secretos STELLAR_OFFRAMP_PUBLIC_KEYSí Cuenta G… del vault de retiro en efectivo; distinta de la cuenta operativa USE_PRIVY_WALLETSNo false mantiene la custodia SEP-30PRIVY_APP_IDPara Privy ID de la app de Privy. Activa el flujo Privy (salvo USE_PRIVY_WALLETS=false) PRIVY_APP_SECRETPara Privy Secreto de la app de Privy PRIVY_SESSION_SIGNER_IDPara Privy Session signer delegado en /setup PRIVY_SESSION_SIGNER_PRIVATE_KEYPara Privy Clave privada del session signer PRIVY_SPEND_POLICY_IDNo Policy de gasto del dashboard de Privy WEB_SETUP_PUBLIC_URLPara Privy URL pública del mini sitio de alta WEB_SETUP_ORIGINPara Privy Origen permitido por CORS para el alta
Variable Obligatoria Descripción SEP24_HOME_DOMAINSí Dominio del ancla SEP-24 para el retiro a Mercado Pago (por defecto testanchor.stellar.org) BLEND_POOL_IDSí Pool de Blend en testnet para el rendimiento de USDC BLEND_USDC_SAC_IDNo SAC de USDC del pool Blend; si falta, usamos USDC_SAC_CONTRACT_ID BLEND_MAX_UTILIZATIONNo Tope de uso del pool para aceptar depósitos (por defecto 0.85)
Variable Obligatoria Descripción OPENAI_API_KEYPara notas de voz Clave de OpenAI para POST /v1/audio/transcriptions OPENAI_TRANSCRIPTION_MODELNo Modelo de transcripción (whisper-1)
Variable Obligatoria Descripción DATABASE_URLEn Render URI de Supabase (Transaction pooler, puerto 6543, sslmode=require). En local, SQLite (data/senda.db) SENDA_DATA_DIRNo Directorio de datos. Si no está, usamos data/ bajo el cwd