Docs

Ecosistema Completo

Mapa completo de toda la infraestructura de Nvito — servicios, seguridad, datos y CI/CD por ambiente.

PublicadoMarzo 2026Equipo de desarrollo, arquitectos, stakeholders

Ambientes Bajos (DEV + TEST)

Ambos ambientes corren en un mismo VPS Contabo gestionado con Coolify. Cada ambiente tiene sus propias instancias de los 6 servicios principales, aislados por subdominio y base de datos.

DEV + TEST Environments

Equipo DevDesarrollo local

Cloudflare Edge

DNS nvito.mxResolucion DNS
WAF + DDoS + SSLSeguridad perimetral
CF Access Zero TrustControl de acceso

Ambiente DEV

dev-api :3000NestJS API
dev-admin :5050Next.js Admin
dev-inv :3001Invitations SSG
dev-app :3002PWA BFF

Ambiente TEST

test-api :3000NestJS API
test-admin :5050Next.js Admin
test-inv :3001Invitations SSG
test-app :3002PWA BFF

Servicios Externos

Neon PG DEVPostgreSQL
Neon PG TESTPostgreSQL
Upstash RedisCache + Queues
MailtrapEmail sandbox
Clerk TestAuth provider
Cloudflare R2Object storage
GitLab CI/CDPipelines

Notas de los ambientes bajos

  • Aislamiento por BD: DEV y TEST usan proyectos Neon separados. Redis comparte instancia Upstash pero con databases distintas (DB 0 y DB 1).
  • Email sandbox: Mailtrap captura todos los correos sin enviarlos a usuarios reales.
  • Clerk test keys: Autenticación funcional pero con credenciales de prueba.
  • R2 buckets separados: Cada ambiente tiene sus propios buckets con prefijo dev-nvito-* y test-nvito-*.
  • CF Access: Protege el acceso a los subdominios de admin. Solo el equipo autorizado puede ingresar.

Producción

El ambiente de producción corre en Railway Pro con PostgreSQL gestionado y red privada interna. Cloudflare Pages sirve la landing y los docs. El API está protegido por un Worker de Cloudflare que inyecta un token de verificacion.

Production Environment

Usuarios publicosInternet
Equipo NvitoAdmin + Dev

Cloudflare Edge

DNS + SSLFull Strict
WAF + DDoSBot Fight Mode
Rate Limiting100 req/min
Worker ProxyX-CF-API-Token
CF AccessZero Trust

Servicios en Cloudflare

nvito.mx LandingAstro
docs.nvito.mxNext.js MDX
cdn.nvito.mx R24 buckets

Zona Publica (Railway)

admin.nvito.mxNext.js :5050
inv.nvito.mxSSG/ISR :3001
app.nvito.mxPWA BFF :3002

API Protegida

nvito-api :3000NestJS + Prisma

Capa de Datos

PostgreSQL RailwayRed privada interna

Servicios Externos

Upstash RedisCache + Queues
Resendsend.nvito.mx
Clerk AuthOAuth + JWT
CF Email Routing*@nvito.mx
GitLab CI/CDPipelines

Patron de zonas

ZonaSignificadoEjemplos
Cloudflare EdgeCapa de seguridad perimetral: DNS, WAF, DDoS, SSL, rate limitingDNS, WAF, Worker Proxy, CF Access
Cloudflare PagesSitios estáticos servidos desde el edge globalLanding (Astro), Docs (Next.js MDX)
Cloudflare R2Almacenamiento de objetos para media y templatescdn.nvito.mx (4 buckets)
Railway ProCompute de producción con red privada internaAPI, Admin, Invitations, PWA, PostgreSQL
Servicios ExternosSaaS de terceros consumidos por el APIUpstash Redis, Resend, Clerk
VPS ContaboCompute de ambientes bajos (DEV + TEST)Coolify con containers Docker

Flujo de un request público

  1. El usuario accede a inv.nvito.mx/mi-boda desde su navegador
  2. Cloudflare DNS resuelve el dominio y aplica SSL/TLS Full Strict
  3. WAF evalua el request (DDoS, bot detection, reglas custom)
  4. Rate limiting verifica que no exceda 100 req/min por IP
  5. El request llega a Railway donde nvito-invitations lo procesa
  6. nvito-invitations hace fetch al API interno (red privada Railway)
  7. El API consulta PostgreSQL y retorna los datos de la invitación
  8. nvito-invitations genera el HTML y lo sirve al usuario

Flujo de un request admin

  1. Un miembro del equipo accede a admin.nvito.mx
  2. Cloudflare DNS resuelve y aplica SSL/TLS
  3. CF Access intercepta el request y solicita autenticación OTP
  4. Una vez verificado, el request llega a nvito-admin en Railway
  5. nvito-admin renderiza la página con autenticación Clerk
  6. Las llamadas al API pasan por el Worker Proxy de Cloudflare
  7. El Worker inyecta el header X-CF-API-Token y forward a nvito-api
  8. CloudflareTokenGuard valida el token, ClerkAuthGuard valida la sesion, RoleGuard verifica permisos

Flujo de email transaccional

  1. nvito-api encola un trabajo en Bull Queue (Redis Upstash)
  2. El processor de email toma el trabajo y renderiza el template
  3. El email se envia via Resend API con dominio verificado send.nvito.mx
  4. Resend entrega el correo al servidor de correo del destinatario
  5. El invitado recibe el email con remitente @send.nvito.mx

Flujo de correo corporativo

  1. Un usuario externo envia un email a hola@nvito.mx
  2. Cloudflare Email Routing recibe el correo en el edge
  3. La regla de routing reenvio el correo a nvito.hq@gmail.com
  4. Aplica para todas las direcciones configuradas: hola@, soporte@, contacto@

Puertos por servicio

ServicioPuertoDescripción
nvito-api3000API REST NestJS — backend principal
nvito-invitations3001Invitaciones públicas SSG/ISR
nvito-pwa3002Progressive Web App con BFF
nvito-admin5050Panel de administración
nvito-docs3333Hub de documentación
nvito-landing4321Landing page (dev)

Tabla resumen de servicios

ServicioProveedorDominioAccesoStack
nvito-apiRailway Pro(interno, sin dominio público)Privado (via CF Worker)NestJS 11 + Prisma
nvito-adminRailway Proadmin.nvito.mxProtegido (CF Access)Next.js 16
nvito-invitationsRailway Proinv.nvito.mxPublicoNext.js 16 SSG/ISR
nvito-pwaRailway Proapp.nvito.mxPublicoNext.js 16 BFF
nvito-landingCloudflare Pagesnvito.mxPublicoAstro 5
nvito-docsCloudflare Pagesdocs.nvito.mxProtegido (CF Access)Next.js 16 MDX
PostgreSQLRailway Pro(red privada)PrivadoPostgreSQL managed
RedisUpstash(SaaS)PrivadoRedis serverless
StorageCloudflare R2cdn.nvito.mxPublico (lectura)Object storage
Email transaccionalResendsend.nvito.mxPrivado (API)SMTP/API
Email corporativoCloudflare*@nvito.mxPublico (recepción)Email Routing
AuthClerk(SaaS)Privado (API)OAuth + JWT
Esta pagina fue util?