# ═══════════════════════════════════════════════════════════════════════════════ # INVENTARIO DE VARIABLES DE ENTORNO - NEXUS WORKSPACE # ═══════════════════════════════════════════════════════════════════════════════ # # Version: 1.0.0 # Fecha: 2026-01-04 # Responsable: @PERFIL_SECRETS_MANAGER # Proposito: Documentacion centralizada de variables de entorno por proyecto # # IMPORTANTE: Este archivo NO contiene valores reales, solo documentacion # de las variables requeridas por cada proyecto # # ═══════════════════════════════════════════════════════════════════════════════ version: "1.0.0" fecha_actualizacion: "2026-01-04" responsable: "@PERFIL_SECRETS_MANAGER" # ───────────────────────────────────────────────────────────────────────────────── # GAMILIT # ───────────────────────────────────────────────────────────────────────────────── gamilit: ubicacion_env: "projects/gamilit/apps/backend/.env" ubicacion_ejemplo: "projects/gamilit/apps/backend/.env.example" variables: # Base de datos database: - nombre: "DATABASE_URL" descripcion: "Connection string PostgreSQL" formato: "postgresql://user:pass@host:port/db" requerido: true sensible: true ejemplo: "postgresql://gamilit:***@localhost:5432/gamilit_platform" - nombre: "DB_HOST" descripcion: "Host de PostgreSQL" requerido: true sensible: false ejemplo: "localhost" - nombre: "DB_PORT" descripcion: "Puerto de PostgreSQL" requerido: true sensible: false ejemplo: "5432" - nombre: "DB_USERNAME" descripcion: "Usuario de base de datos" requerido: true sensible: true - nombre: "DB_PASSWORD" descripcion: "Password de base de datos" requerido: true sensible: true - nombre: "DB_DATABASE" descripcion: "Nombre de la base de datos" requerido: true sensible: false ejemplo: "gamilit_platform" # Autenticacion auth: - nombre: "JWT_SECRET" descripcion: "Secreto para firmar JWT" requerido: true sensible: true longitud_minima: 32 - nombre: "JWT_EXPIRATION" descripcion: "Tiempo de expiracion de tokens" requerido: true sensible: false ejemplo: "7d" - nombre: "REFRESH_TOKEN_SECRET" descripcion: "Secreto para refresh tokens" requerido: true sensible: true longitud_minima: 32 - nombre: "REFRESH_TOKEN_EXPIRATION" descripcion: "Expiracion de refresh tokens" requerido: true sensible: false ejemplo: "30d" # OAuth Providers oauth: google: - nombre: "GOOGLE_CLIENT_ID" descripcion: "Client ID de Google OAuth" requerido: true sensible: true - nombre: "GOOGLE_CLIENT_SECRET" descripcion: "Client Secret de Google OAuth" requerido: true sensible: true - nombre: "GOOGLE_CALLBACK_URL" descripcion: "URL de callback para OAuth" requerido: true sensible: false ejemplo: "https://api.gamilit.com/auth/google/callback" facebook: - nombre: "FACEBOOK_APP_ID" requerido: false sensible: true - nombre: "FACEBOOK_APP_SECRET" requerido: false sensible: true apple: - nombre: "APPLE_CLIENT_ID" requerido: false sensible: true - nombre: "APPLE_TEAM_ID" requerido: false sensible: true - nombre: "APPLE_KEY_ID" requerido: false sensible: true - nombre: "APPLE_PRIVATE_KEY" requerido: false sensible: true notas: "Contenido del archivo .p8" # Aplicacion app: - nombre: "NODE_ENV" descripcion: "Entorno de ejecucion" requerido: true sensible: false valores_validos: ["development", "staging", "production"] - nombre: "PORT" descripcion: "Puerto del servidor" requerido: true sensible: false ejemplo: "3006" - nombre: "API_PREFIX" descripcion: "Prefijo de la API" requerido: false sensible: false ejemplo: "api/v1" - nombre: "CORS_ORIGINS" descripcion: "Origenes permitidos para CORS" requerido: true sensible: false ejemplo: "https://gamilit.com,https://app.gamilit.com" # Email email: - nombre: "SMTP_HOST" requerido: true sensible: false - nombre: "SMTP_PORT" requerido: true sensible: false ejemplo: "587" - nombre: "SMTP_USER" requerido: true sensible: true - nombre: "SMTP_PASSWORD" requerido: true sensible: true - nombre: "EMAIL_FROM" requerido: true sensible: false ejemplo: "noreply@gamilit.com" # Storage storage: - nombre: "S3_BUCKET" requerido: false sensible: false - nombre: "S3_ACCESS_KEY" requerido: false sensible: true - nombre: "S3_SECRET_KEY" requerido: false sensible: true - nombre: "S3_REGION" requerido: false sensible: false ejemplo: "us-east-1" # ───────────────────────────────────────────────────────────────────────────────── # TRADING-PLATFORM # ───────────────────────────────────────────────────────────────────────────────── trading_platform: ubicacion_env: "projects/trading-platform/.env" estructura: "monorepo con .env en raiz" variables: # Base de datos database: - nombre: "DATABASE_URL" descripcion: "PostgreSQL connection string" requerido: true sensible: true # APIs de Trading trading_apis: - nombre: "BINANCE_API_KEY" descripcion: "API Key de Binance" requerido: true sensible: true - nombre: "BINANCE_SECRET_KEY" descripcion: "Secret Key de Binance" requerido: true sensible: true - nombre: "ALPACA_API_KEY" descripcion: "API Key de Alpaca" requerido: false sensible: true - nombre: "ALPACA_SECRET_KEY" descripcion: "Secret Key de Alpaca" requerido: false sensible: true - nombre: "POLYGON_API_KEY" descripcion: "API Key de Polygon.io" requerido: false sensible: true # ML Services ml: - nombre: "MLFLOW_TRACKING_URI" descripcion: "URI de MLflow" requerido: true sensible: false ejemplo: "http://localhost:5000" - nombre: "MODEL_REGISTRY_PATH" descripcion: "Path para modelos" requerido: true sensible: false # Servicios services: - nombre: "TRADING_API_PORT" ejemplo: "4000" requerido: true sensible: false - nombre: "ML_SERVICE_PORT" ejemplo: "5000" requerido: true sensible: false - nombre: "FRONTEND_PORT" ejemplo: "3200" requerido: true sensible: false # Redis (si aplica) redis: - nombre: "REDIS_URL" descripcion: "URL de Redis para cache/queues" requerido: false sensible: true ejemplo: "redis://localhost:6379" # ───────────────────────────────────────────────────────────────────────────────── # ERP-SUITE (CORE) # ───────────────────────────────────────────────────────────────────────────────── erp_suite: ubicacion_env: "projects/erp-suite/apps/erp-core/.env" notas: "Verticales heredan de core y agregan propias" variables: database: - nombre: "DATABASE_URL" requerido: true sensible: true - nombre: "TENANT_DATABASE_PREFIX" descripcion: "Prefijo para DBs de tenants" requerido: true sensible: false ejemplo: "erp_tenant_" auth: - nombre: "JWT_SECRET" requerido: true sensible: true - nombre: "SESSION_SECRET" requerido: true sensible: true multi_tenancy: - nombre: "DEFAULT_TENANT_ID" descripcion: "Tenant por defecto" requerido: true sensible: false - nombre: "TENANT_HEADER" descripcion: "Header para identificar tenant" requerido: true sensible: false ejemplo: "X-Tenant-ID" # ───────────────────────────────────────────────────────────────────────────────── # PLATFORM MARKETING CONTENT # ───────────────────────────────────────────────────────────────────────────────── platform_marketing_content: ubicacion_env: "projects/platform_marketing_content/.env" variables: database: - nombre: "DATABASE_URL" requerido: true sensible: true ai_services: - nombre: "OPENAI_API_KEY" descripcion: "API Key de OpenAI" requerido: true sensible: true - nombre: "ANTHROPIC_API_KEY" descripcion: "API Key de Anthropic (Claude)" requerido: false sensible: true social_media: - nombre: "TWITTER_API_KEY" requerido: false sensible: true - nombre: "TWITTER_API_SECRET" requerido: false sensible: true - nombre: "INSTAGRAM_ACCESS_TOKEN" requerido: false sensible: true - nombre: "LINKEDIN_CLIENT_ID" requerido: false sensible: true - nombre: "LINKEDIN_CLIENT_SECRET" requerido: false sensible: true # ───────────────────────────────────────────────────────────────────────────────── # VARIABLES COMPARTIDAS (WORKSPACE LEVEL) # ───────────────────────────────────────────────────────────────────────────────── shared: descripcion: "Variables que podrian compartirse entre proyectos" variables: # Logging logging: - nombre: "LOG_LEVEL" valores_validos: ["debug", "info", "warn", "error"] default: "info" - nombre: "LOG_FORMAT" valores_validos: ["json", "pretty"] default: "json" # Sentry (error tracking) sentry: - nombre: "SENTRY_DSN" descripcion: "DSN de Sentry para error tracking" requerido: false sensible: true # Analytics analytics: - nombre: "GA_TRACKING_ID" descripcion: "Google Analytics tracking ID" requerido: false sensible: false # ───────────────────────────────────────────────────────────────────────────────── # POLITICAS DE GESTION # ───────────────────────────────────────────────────────────────────────────────── politicas: almacenamiento: desarrollo: metodo: "archivo .env local" seguridad: "gitignore obligatorio" staging: metodo: "archivo .env en servidor" seguridad: "permisos 600, usuario deploy" produccion: metodo: "archivo .env + considerar vault" seguridad: "permisos 600, acceso restringido" backup: "copia en vault/1password" rotacion: jwt_secrets: "trimestral" api_keys: "semestral o ante compromiso" database_passwords: "anual o ante compromiso" oauth_secrets: "segun proveedor" auditoria: frecuencia: "mensual" checklist: - "Verificar que .env no esta en git" - "Verificar permisos de archivos" - "Verificar variables no usadas" - "Verificar variables faltantes vs .env.example" documentacion: obligatorio: - "Mantener .env.example actualizado" - "Documentar nuevas variables en este inventario" - "Notificar a equipo de cambios" # ───────────────────────────────────────────────────────────────────────────────── # REFERENCIAS # ───────────────────────────────────────────────────────────────────────────────── referencias: perfil_responsable: "@PERFIL_SECRETS_MANAGER" directiva_secretos: "orchestration/directivas/simco/SIMCO-SECRETS.md" produccion_inventory: "orchestration/inventarios/PRODUCTION-INVENTORY.yml" # ═══════════════════════════════════════════════════════════════════════════════ # FIN DE INVENTARIO # ═══════════════════════════════════════════════════════════════════════════════