Multi-tenant que escala sin reescribir.
Construimos plataformas SaaS desde cero — el tipo de proyecto donde las decisiones del primer mes definen los próximos cinco años. Si esto te suena familiar, esta es la página correcta.
Las decisiones que separan una plataforma viable de una que vas a tirar.
Aislamiento multi-tenant
Decidir desde el inicio si vas con shared schema, schema per tenant, o database per tenant. Cada uno tiene trade-offs serios. Lo común es elegir mal y pagarlo a los 18 meses.
Autenticación robusta
SSO empresarial, MFA, gestión de roles y permisos a nivel granular. Auth0, Clerk o WorkOS según el caso. A veces self-hosted con Better Auth.
Billing
Stripe para la mayoría de los casos, Paddle cuando el cliente vende internacionalmente y no quiere lidiar con impuestos por país.
Audit log
Quién hizo qué, cuándo, desde dónde. Crítico para enterprise y para SOC 2.
Métricas y dashboards
Tu plataforma no es solo lo que ven los clientes — es también lo que ves vos sobre los clientes. Stripe + PostHog + dashboards custom en producto.
Onboarding
El momento más subestimado del producto. Un onboarding bien hecho aumenta retención más que cualquier feature flashy.
API pública
Si tu plataforma va a vivir 5+ años, va a necesitar una API pública. Diseñarla desde el inicio cuesta poco. Reescribirla después cuesta caro.
Lo que probablemente vas a llevar puesto.
Next.js 15 (App Router), Tailwind, shadcn/ui.
NestJS sobre Postgres con multi-tenancy a nivel de schema (default), o row-level security con políticas RLS de Postgres cuando el aislamiento puede ser lógico.
Clerk para arranque rápido, WorkOS cuando hay requisitos enterprise (SSO, SCIM), Better Auth cuando se quiere cero lock-in.
Stripe Connect o Stripe Billing según el modelo.
Cloudflare para frontend y edge functions, AWS para servicios stateful críticos.
¿Estás arrancando una plataforma o reescribiendo una?
Los dos casos son nuestros. La primera llamada se enfoca en entender en qué momento estás — un MVP nuevo y una plataforma de 3 años en deuda técnica son problemas muy distintos.
Hablemos →