Multi-tenant / Workspace
Multi-tenant / Workspace
8 reglasMuestra siempre el workspace activo
El espacio de trabajo activo debe ser visible de forma permanente, sin requerir interacción para descubrirlo. Cuando el usuario no sabe en que organización opera, comete errores costosos y pierde confianza. Coloca el identificador (logo + nombre) en una posición fija y reconocible, tipicamente la esquina superior izquierda, antes de la navegación.
Linear Docs, Slack, UX Power ToolsPreserva el lugar del usuario al cambiar de workspace
Al cambiar de workspace, el usuario debe retomar su trabajo desde el punto más cercano posible dentro del nuevo espacio. Registra la última ubicación por workspace y restaurala al volver. El coste cognitivo del cambio de contexto es real y medible: NNGroup documenta que quienes alternan tareas tardan más y producen menor calidad.
NNGroup, Figma BlogConfirma el workspace activo antes de acciones destructivas
Antes de ejecutar acciones de alta severidad (eliminar, archivar, exportar, transferir propiedad) muestra el nombre del workspace activo dentro del dialogo. El usuario puede estar operando en el tenant equivocado por habito o por un cambio reciente de contexto. Maximiza la distancia entre la acción destructiva y la benigna, y pide escribir el nombre para confirmar.
NNGroup, GitLab Pajamas DSGestiona invitaciones y roles por workspace, no por cuenta global
Las invitaciones y los roles son propiedades del workspace, no del usuario global: un mismo usuario puede ser Admin en uno y Member en otro de forma independiente. El flujo de invitación debe nombrar explicitamente el workspace y el rol, y las invitaciones deben expirar para reducir la superficie de ataque y disuadir registros falsos.
Auth0, Linear Docs, WorkOSSepara identidad global de la membresia en cada tenant
La arquitectura debe separar el usuario (identidad global) de su membresia (relación con un tenant). Así un consultor o empleado multi-empresa opera con una sola cuenta en varios workspaces sin duplicar credenciales. La interfaz refleja la distinción: perfil global unificado arriba, roles y ajustes por workspace abajo. Evita el atrapamiento de "un usuario duplicado por tenant".
WorkOS, Figma Blog, Auth0Permite branding y configuración por tenant
En SaaS B2B cada organización debe poder personalizar su workspace: logo, colores, subdominio propio y plantillas de email. La personalización opera en cascada (el workspace sobreescribe los defaults globales) y se aplica en toda la experiencia, incluidos emails transaccionales, pantallas de login y notificaciones. El branding por tenant es un diferenciador de retención en SaaS empresarial.
Auth0, WorkOS, DevelopexDefine permisos scope-aware por workspace
La autorización debe ser consciente del tenant: los roles se asignan por workspace y los recursos se filtran según el tenant activo. Ninguna acción de UI o servicio debe operar sin conocer el contexto. El mismo usuario puede ver el botón Publicar en un workspace y no verlo en otro. Cada tenant puede tener politicas propias (uno exige SSO+MFA; otro permite password).
WorkOS, Linear Docs, Auth0Distingue datos compartidos de privados y haz accesible el switcher
El usuario debe identificar visualmente que es privado del workspace actual y que es compartido entre tenants (plantillas globales, integraciones de plataforma, perfil de usuario). El switcher mismo debe ser accesible: aria-haspopup, aria-expanded, label descriptivo y teclado completo (WCAG 2.2 SC 2.1.1). La regla de oro: un tenant nunca debe ver datos de otro, y la UI debe reforzar ese aislamiento de forma visual, no solo técnica.
WCAG 2.2 SC 2.1.1, W3C ARIA11, WorkOS- R-1126 Muestra siempre el workspace activo
- R-1127 Preserva el lugar del usuario al cambiar de workspace
- R-1128 Confirma el workspace activo antes de acciones destructivas
- R-1129 Gestiona invitaciones y roles por workspace, no por cuenta global
- R-1130 Separa identidad global de la membresia en cada tenant
- R-1131 Permite branding y configuración por tenant
- R-1132 Define permisos scope-aware por workspace
- R-1133 Distingue datos compartidos de privados y haz accesible el switcher