Qué vas a construir
Un SaaS (Software as a Service) es software que se usa desde la nube por suscripción: muchas personas y muchas empresas comparten la misma aplicación y la misma base de datos. Eso plantea el reto central de este capstone: que cada cliente vea solo lo suyo.
Multi-tenancy
Cada cuenta de cliente es un tenant (inquilino). En un modelo
multi-tenant, una sola instancia de tu aplicación sirve a todos los tenants,
y los datos conviven en las mismas tablas. La pieza clave es una columna como
tenant_id que etiqueta cada fila con el dueño al que pertenece.
// Una fila de la tabla "proyectos"
{ id: 3, tenant_id: 1, nombre: "App móvil de Acme" }
Por qué aislar por tenant
Si una consulta olvida filtrar por tenant_id, un cliente podría ver o
modificar los datos de otro. Es el fallo de seguridad más grave (y más común)
de un SaaS. Por eso, toda lectura y escritura debe acotarse al tenant de la
petición:
SELECT * FROM proyectos WHERE tenant_id = :tenantActual;
No es opcional ni una optimización: es la frontera de seguridad de tu producto.
Las capas que vas a tocar
El capstone integra todo el stack que has aprendido en DevPath. Construirás, en orden:
- Datos (SQL): la consulta que devuelve solo los proyectos de un tenant.
- Backend (JS): un handler que encadena el pipeline de una petición.
- Operación (JS): un checklist de producción y la configuración por entorno.
- UI (React): un panel que muestra las métricas del SaaS.
Cada pieza es pequeña; juntas, son una aplicación lista para lanzarse.