Lista exhaustiva de todos los servicios externos que usa el sistema, organizados por propósito. Para cada uno indico el panel de admin, qué hace exactamente y dónde están las credenciales (sin ponerlas en plano acá).
Para qué Cloud Run sirve tcgcards-api. Cloud Scheduler dispara los cron jobs. Secret Manager guarda credenciales. Project ID api-cards-prodProject Number 1033181994095Region us-central1Panel https://console.cloud.google.com/?project=api-cards-prod Cuenta admin yoeldts2@gmail.comCosto aprox. Free tier + pequeños cobros por Cloud Run requests
Recursos clave:
Cloud Run service tcgcards-api
Cloud Scheduler jobs: orders-tick, orders-awaiting-payment-cleanup, wallet-reconcile-daily, refunds-reconcile-daily, mongo-backup-hourly
Secret Manager con secrets de la app (ver más abajo)
IAM service accounts: mongo-backup-scheduler@api-cards-prod.iam.gserviceaccount.com (dispara los crons con OIDC)
Comandos útiles:
gcloud run services describe tcgcards-api --region us-central1 --project api-cards-prod
gcloud scheduler jobs list --project api-cards-prod --location us-central1
gcloud secrets versions access latest --secret=<nombre> --project api-cards-prod
Para qué Sirve tcgcards-web en producción. CDN propio, auto-deploy desde GitHub. Panel https://vercel.com Cuenta Vinculada a yoeldts2@gmail.com Plan Hobby (gratis) Producción https://tcgcards.cl Env vars Configuradas en Settings → Environment Variables
Para qué DNS de tcgcards.cl. CDN delante del sitio. Email Routing para recibir correo. Zero Trust Access para el sitio de docs. Panel https://dash.cloudflare.com Cuenta yoeldts2@gmail.comPlan Free
Email Routing inbound:
soporte@tcgcards.cl → reenvía a la casilla personal
disputas@tcgcards.cl → reenvía a la casilla personal
Zero Trust (Access):
Aplicación: docs.tcgcards.cl
Identity provider: Google
Policy: whitelist por email
Para qué Base de datos primaria. Una sola colección de datos productivos (api-cards). Panel https://cloud.mongodb.com Cluster Productivo Cuenta admin yoeldts2@gmail.comBackups Hourly via Cloud Scheduler (job mongo-backup-hourly) Retention objetivo (RPO) ~1 hora Connection string Vive en GCP Secret Manager como MONGODB_URI. NO hardcodeada.
Para qué Cobros y reembolsos. Único procesador de pagos. Panel https://www.mercadopago.cl/developers/panel Cuenta Vinculada a la cuenta de tcgcards en MP Credenciales MP_ACCESS_TOKEN y MP_WEBHOOK_SECRET en GCP Secret ManagerWebhook URL https://tcgcards-api-1033181994095.us-central1.run.app/v1/webhooks/mpEntorno Producción (PROD). El TEST usa prefijo APP_USR- desde 2026.
Para qué Storage + CDN de imágenes subidas por usuarios (fotos de listings, foto de perfil). Transformaciones automáticas (resize, crop, format webp). Panel https://cloudinary.com/console Cloud name Vive en CLOUDINARY_CLOUD_NAME (Secret Manager) Plan Free tier Uploads Firmados desde el backend (/v1/uploads/...)
Para qué Envío de correos transaccionales (órdenes, disputas, etc.). Panel https://resend.com API key RESEND_API_KEY en Secret ManagerFrom email notificaciones@tcgcards.cl (configurado en RESEND_FROM_EMAIL)Dominio verificado tcgcards.cl (SPF + DKIM en Cloudflare DNS)
Para envío manual de correos (avisos, comunicaciones): se usa Gmail con “Send As” desde la cuenta personal, configurada para enviar como notificaciones@tcgcards.cl via SMTP de Resend.
Para qué Errores frontend (web) + backend (api). Panel https://sentry.io Cuenta yoeldts2@gmail.comProyectos uno para web, uno para api DSN En env vars de Vercel (web) y Secret Manager (api)
Para qué Eventos de producto y analytics. Solo en frontend. Panel https://app.posthog.com Cuenta yoeldts2@gmail.comAPI key Env var pública en Vercel (NEXT_PUBLIC_POSTHOG_KEY)
Para qué Provider de OAuth para login con Google. Panel https://console.cloud.google.com/apis/credentials?project=api-cards-prod OAuth Client ID Configurado en AUTH_GOOGLE_ID (Vercel env) OAuth Client Secret Configurado en AUTH_GOOGLE_SECRET (Vercel env) Redirect URIs autorizados https://tcgcards.cl/api/auth/callback/google, http://localhost:3000/api/auth/callback/google
Para evitar confusión cuando alguien pregunte “¿no usamos X?”:
❌ Stripe / Webpay / Flow — solo Mercado Pago
❌ S3 / Cloud Storage para imágenes — solo Cloudinary
❌ Redis / Memcached — sin cache de aplicación (solo Next.js fetch cache)
❌ Kafka / SQS / colas — todas las acciones son síncronas o cron
❌ CI/CD propio — Vercel (auto) y Cloud Run (manual)
❌ Docker compose local — Mongo local con Atlas connection string o mongodb-memory-server para tests
Quick reference de dónde está guardada cada credencial:
Credencial Ubicación primaria MONGODB_URIGCP Secret Manager (api-cards-prod) ADMIN_TOKENGCP Secret Manager INTERNAL_JWT_SECRETGCP Secret Manager (mismo valor en Vercel) INTERNAL_AUTH_SECRETGCP Secret Manager (mismo valor en Vercel) INTERNAL_CRON_SECRETGCP Secret Manager (también en Cloud Scheduler como X-Internal-Cron-Secret header) CLOUDINARY_API_SECRETGCP Secret Manager RESEND_API_KEYGCP Secret Manager MP_ACCESS_TOKENGCP Secret Manager MP_WEBHOOK_SECRETGCP Secret Manager BANK_ACCOUNT_ENCRYPTION_KEYGCP Secret Manager AUTH_SECRET (Auth.js)Vercel env AUTH_GOOGLE_ID / AUTH_GOOGLE_SECRETVercel env (config en Google Cloud Console) SENTRY_DSN (web)Vercel env SENTRY_DSN (api)GCP Secret Manager
Ver runbooks para cómo rotar cada una.