Servicios Externos
Resumen de servicios
Section titled “Resumen de servicios”| Servicio | Uso | Variables de entorno |
|---|---|---|
| Stripe | Pagos y suscripciones | STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRET |
| Neon PostgreSQL | Base de datos | DATABASE_URL, DIRECT_URL |
| Upstash Redis | Caché + BullMQ + pub/sub | UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN |
| Cloudflare R2 | Storage de archivos | R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET_NAME |
| Bunny.net | CDN de video | BUNNY_API_KEY, BUNNY_LIBRARY_ID, BUNNY_CDN_URL |
| Resend | Email transaccional | RESEND_API_KEY, RESEND_FROM_EMAIL |
| Sentry | Error tracking | SENTRY_DSN |
| PostHog | Product analytics | POSTHOG_API_KEY |
| Google OAuth | Login social | GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET |
| LinkedIn OAuth | Login social | LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET |
Stripe
Section titled “Stripe”NappAI Fluency usa Stripe para gestionar suscripciones recurrentes.
Flujo de suscripción:
- Usuario elige plan →
POST /payments/create-checkout-session - Redirección a Stripe Checkout
- Stripe envía webhook a
POST /payments/webhook - Backend actualiza
user.roleyuser.subPeriodEnd
Importante: El endpoint /payments/webhook usa el raw body parser (no JSON) para verificar la firma de Stripe.
Redis + BullMQ (Upstash)
Section titled “Redis + BullMQ (Upstash)”Redis tiene varios usos en el sistema:
| Uso | Patrón |
|---|---|
| Caché de sesión | TTL configurable |
| Colas de tareas | BullMQ — certificates, email, ai, reports |
| Pub/sub | Invalidación de caché de AICredentials |
| Rate limiting | ThrottlerModule de NestJS |
Cloudflare R2
Section titled “Cloudflare R2”Almacenamiento S3-compatible para:
- Thumbnails de cursos
- Recursos adjuntos (PDF, DOCX, PPTX…)
- Avatares de usuarios
Bunny.net
Section titled “Bunny.net”CDN para video streaming:
- Los videos de lecciones se alojan en Bunny Stream
- La URL de reproducción incluye un token firmado (tiempo de expiración)
- El backend genera el token — nunca exponer la API key al cliente
Resend
Section titled “Resend”Email transaccional para:
- Verificación de email al registro
- Reset de contraseña
- Invitaciones corporativas
- Certificados emitidos (PDF adjunto)
- Notificaciones de suscripción