EmpiezaTuSaaS

Checklist de Producción

Todo lo que necesitas verificar antes de lanzar tu SaaS

Checklist de Producción

Todo lo que necesitas verificar antes de poner tu SaaS en producción. Sigue estos pasos en orden.

1. Variables de entorno en producción

Configura todas las variables en tu proveedor de hosting (Vercel, Railway, etc.):

NEXT_PUBLIC_APP_URL="https://tuapp.com"
DATABASE_URL="postgresql://user:pass@host:5432/db?sslmode=require"
BETTER_AUTH_SECRET="secreto-de-produccion-unico"
BETTER_AUTH_URL="https://tuapp.com"
STRIPE_SECRET_KEY="sk_live_..."
STRIPE_WEBHOOK_SECRET="whsec_..."
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_live_..."
RESEND_API_KEY="re_..."

No reutilices las claves de desarrollo en producción. Genera nuevas para cada entorno.

2. Stripe: modo producción

  1. Desactiva test mode en el dashboard de Stripe
  2. Crea los productos y precios en modo live
  3. Actualiza los Price IDs en tus variables de entorno:
    STRIPE_PRICE_ID_STARTER="price_live_..."
    STRIPE_PRICE_ID_PRO="price_live_..."
    STRIPE_PRICE_ID_LIFETIME="price_live_..."
  4. Crea un nuevo webhook endpoint:
    • URL: https://tuapp.com/api/stripe/webhooks
    • Eventos: checkout.session.completed, customer.subscription.updated, customer.subscription.deleted
  5. Copia el nuevo webhook signing secret a STRIPE_WEBHOOK_SECRET
  6. Verifica tu cuenta de Stripe para recibir pagos reales

3. Better Auth: configuración de producción

  1. Genera un nuevo secreto para producción:
    openssl rand -base64 32
  2. Actualiza las variables:
    BETTER_AUTH_SECRET="tu-nuevo-secreto-de-produccion"
    BETTER_AUTH_URL="https://tuapp.com"
  3. Verifica que los callbacks de OAuth apunten al dominio de producción

4. Resend: dominio verificado

  1. Ve a Domains en el dashboard de Resend
  2. Agrega tu dominio de producción
  3. Configura los registros DNS: MX, SPF y DKIM
  4. Espera a que Resend verifique el dominio
  5. Actualiza RESEND_FROM_EMAIL a noreply@tudominio.com

Sin dominio verificado, Resend solo permite enviar emails a la direccion del propietario de la cuenta. Verificar el dominio es obligatorio para producción.

5. Google OAuth: verificación

Si usas Google Login:

  1. Ve a Google Cloud Console
  2. Agrega la URI de redirección de producción:
    https://tuapp.com/api/auth/callback/google
  3. Agrega tu dominio a Authorized domains
  4. Si tu app está en "Testing", solicita verificación para pasar a producción
  5. Completa la pantalla de consentimiento OAuth con los datos de tu empresa

6. Base de datos: migraciones

Ejecuta las migraciones de Prisma en la base de datos de producción:

# Aplicar migraciones pendientes
npx prisma migrate deploy

# Verificar que la base de datos está sincronizada
npx prisma db pull

Usa prisma migrate deploy en producción, no prisma migrate dev. El comando deploy solo aplica migraciones pendientes sin generar nuevas.

7. DNS: configurar dominio

En tu proveedor de DNS:

  1. Agrega un registro A o CNAME apuntando a tu hosting
  2. Si usas Vercel:
    • Ve a Settings > Domains en tu proyecto
    • Agrega tu dominio y sigue las instrucciones
  3. Espera la propagacion DNS (puede tomar hasta 48 horas)
  4. Verifica que HTTPS funciona correctamente

8. Security headers

Verifica que los headers de seguridad estan configurados en next.config.ts:

  • Strict-Transport-Security
  • X-Frame-Options: DENY
  • X-Content-Type-Options: nosniff
  • Referrer-Policy

Prueba en securityheaders.com.

9. Test end-to-end

Prueba todos los flujos criticos en producción:

  • Registro de usuario (email/password)
  • Login con Google OAuth
  • Checkout completo con Stripe (usa una tarjeta real con un precio minimo)
  • Recepcion de webhook de Stripe
  • Envio de email de bienvenida
  • Recuperación de contraseña
  • Acceso al customer portal de Stripe
  • Todas las páginas cargan sin errores en la consola
# Verificar que el build pasa sin errores
npm run build

# Verificar que no hay errores de lint
npm run lint

Despues del lanzamiento

Monitoreo

  • Activa Vercel Analytics para métricas de rendimiento
  • Configura alertas en Stripe para pagos fallidos
  • Revisa los logs de Vercel regularmente

Backups

  • Configura backups automaticos de tu base de datos
  • Documenta el proceso de restauracion

Actualizaciones

  • Mantén las dependencias actualizadas (npm audit)
  • Revisa las actualizaciones de seguridad de Next.js y Better Auth

Guarda está checklist y revisala cada vez que hagas un deploy a producción. Los errores mas comunes son variables de entorno faltantes y webhooks mal configurados.

On this page