HOJA DE DATOSVENTICINQUE, MAUROFrontend · Full-Stack

Rev. 2026.08reemplaza a 2025.11

English

Copiado

A-04

Koru Power Seller

Social selling para vendedores de tiendas VTEX. Marca blanca y multitenant: un solo deploy sirve a todos los retailers, cada uno con su marca y sus credenciales.

Especificación
ClienteKoru Suite · producto propio de la agencia
Tipoproducto
PlataformaCloudflare Workers
Año2026
RolAutor
StackTypeScript · React · Cloudflare Pages · D1 · KV · VTEX Catalog · VTEX OMS · Master Data
Código10.382 líneas · git ls-files ts/tsx, sin node_modules ni dist
Commits propios105 de 105
Casos de test90

Contexto

Los vendedores de una tienda VTEX venden por WhatsApp, en el local, en la calle. Necesitan el catálogo, el precio real y la posibilidad de cerrar la orden desde el teléfono. Cada retailer quiere que eso se vea como su marca, no como la nuestra.

Opciones

Lo simple es un deploy por cliente: cada retailer con su instancia, su dominio y sus variables. Es simple hasta el tercero. Después son tres pipelines, tres certificados y tres versiones distintas del mismo bug.

Decisión

Un solo deploy, multitenant, con un único hostname para todos. El problema que eso crea es de identidad: si todos entran por la misma puerta, la puerta no puede tener el logo de nadie.

La resolución es un login en dos pasos. Primero el email: con eso la app busca a qué tienda pertenece esa persona y pinta la marca —logo y color— antes de pedir la contraseña. Cuando escribís la clave ya estás viendo tu tienda.

Hay dos tipos de cuenta y no comparten mecanismo. El administrador entra con su usuario de Koru Suite y no tiene contraseña propia en la app; si maneja varias tiendas, elige. El vendedor entra con email y contraseña que le da su administrador, y no tiene acceso ni a Koru ni al panel.

Verificación

10.382 líneas y 90 casos de test sobre Cloudflare Pages con D1 y KV. Las credenciales de VTEX son por tenant y viven del lado del servidor.

Consecuencias

Multitenant sobre un hostname significa que cada consulta lleva el tenant adentro y que un error de resolución es un error de seguridad, no de UI. Por eso la mitad de los tests son de eso y no de pantallas.

← Archivo