Communitygithub.com

YepAPI/skills

Aislamiento de inquilinos (a nivel de fila vs esquema), enrutamiento por subdominio, configuración por inquilino y particionamiento de datos.

¿Qué es skills?

Esta habilidad proporciona un conjunto completo de patrones y mejores prácticas para implementar multi-tenencia en aplicaciones web modernas, compatible con plataformas como Next.js, Prisma y PostgreSQL. Cubre estrategias clave como aislamiento a nivel de fila (Row-Level Security) y aislamiento por esquema, enrutamiento basado en subdominios y dominios personalizados, y configuración por inquilino a través de tablas dedicadas. También incluye implementaciones prácticas de middleware para extraer el contexto del inquilino desde el host de la solicitud, middleware de Prisma para filtrar automáticamente consultas por tenantId, y patrones RLS en PostgreSQL para garantizar la seguridad a nivel de base de datos. La habilidad ayuda a los desarrolladores a evitar fugas de datos entre inquilinos, optimizar el rendimiento con índices compuestos y mantener la escalabilidad mediante particionamiento de tablas.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/YepAPI/skills/tree/HEAD/skills/multi-tenancy

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Multi-Tenencia

Reglas

  • Aislamiento a nivel de fila (por defecto): agrega la columna tenantId a cada tabla de ámbito del inquilino y aplícalo mediante middleware o RLS (Seguridad a Nivel de Fila)
  • Esquema por inquilino: úsalo cuando los inquilinos necesiten esquemas personalizados o aislamiento estricto de datos — operaciones más complejas, mejor aislamiento
  • Enrutamiento por subdominio: extrae el inquilino de {tenant}.app.com — resuélvelo en middleware, establece tenantId en el contexto de la solicitud
  • Dominios personalizados: CNAME a tu aplicación, busca el inquilino por el encabezado Host — usa una tabla domains que mapee dominios personalizados a IDs de inquilino
  • Configuración por inquilino: almacena tema (logo, colores), flags de características y límites en una tabla tenant_settings — almacena en caché en memoria con TTL
  • Patrón RLS (Postgres): ALTER TABLE posts ENABLE ROW LEVEL SECURITY; CREATE POLICY tenant_isolation ON posts USING (tenant_id = current_setting('app.tenant_id'))
  • Middleware: extrae el inquilino del subdominio/encabezado, establécela en el contexto, aplica a todas las consultas de base de datos — nunca dejes que una consulta se ejecute sin ámbito de inquilino
  • Particionamiento de datos: para tablas grandes, particiona por tenantId — mejora el rendimiento de las consultas y permite copia de seguridad/restauración por inquilino

Patrón de Aislamiento a Nivel de Fila

// Middleware - extrae inquilino del subdominio
function getTenantFromHost(host: string): string {
  const subdomain = host.split(".")[0];
  return subdomain; // o búscalo en la tabla de inquilinos
}

// Middleware de Prisma - filtra automáticamente por tenantId
prisma.$use(async (params, next) => {
  if (TENANT_MODELS.includes(params.model)) {
    params.args.where = { ...params.args.where, tenantId: context.tenantId };
  }
  return next(params);
});

Enrutamiento por Subdominio (Middleware de Next.js)

export function middleware(request: NextRequest) {
  const host = request.headers.get("host") ?? "";
  const tenant = host.split(".")[0];
  const response = NextResponse.next();
  response.headers.set("x-tenant-id", tenant);
  return response;
}

Evitar

  • Consultas sin ámbito de inquilino — un solo WHERE tenantId = ? faltante filtra datos entre inquilinos
  • Codificar el inquilino en el cliente — resuélvelo desde el subdominio/dominio en el servidor
  • Sin índice en tenantId — cada tabla de ámbito del inquilino necesita un índice compuesto que comience con tenantId
  • Mezclar datos de inquilinos en cachés compartidas — asigna las claves de caché con {tenantId}:{key}

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

YepAPI/skills

WCAG 2.1 AA — semantic HTML, keyboard navigation, screen readers.

YepAPI/skills

Experiment setup, variant splitting, statistical significance, and feature flag integration.

YepAPI/skills

CRUD generators, data tables, user management, role-based access, and bulk operations.

YepAPI/skills

Monitor what ChatGPT and Gemini say about your brand using YepAPI.

YepAPI/skills

Queue workers with BullMQ/Inngest/Trigger.dev, job retries, dead letter queues, concurrency.

YepAPI/skills

Commander.js, interactive prompts with Clack, spinners, colors, config files, exit codes, and npm publishing.

YepAPI/skills

cmdk integration, Cmd+K trigger, fuzzy search, grouped actions, keyboard navigation, and dynamic action registration.

YepAPI/skills

Content planning with trend and sentiment data from YepAPI.

YepAPI/skills

Content calendar, keyword-driven planning, and content briefs.

YepAPI/skills

Theme switching with CSS variables, system preference detection, next-themes, and persistence.

YepAPI/skills

Threaded comments, @mentions, reactions, moderation queue, optimistic UI, and cursor pagination.

YepAPI/skills

Competitive analysis between domains using YepAPI.

YepAPI/skills

Layout grids, KPI cards, data tables with sorting/filtering, sidebar navigation, and responsive breakpoints.

YepAPI/skills

Data encryption — TLS everywhere, AES-256-GCM for PII, bcrypt passwords, encrypted backups.

YepAPI/skills

Chart patterns with Recharts/Nivo/D3, responsive containers, color scales, and accessibility.

YepAPI/skills

Drizzle schema definition, push vs migrate, type-safe queries, relations, transactions, and prepared statements.

YepAPI/skills

Upload handling, resize/compress, CDN delivery, blur placeholders, and next/image patterns.

YepAPI/skills

Local business and Google Maps research using YepAPI.

YepAPI/skills

Cursor-based pagination, IntersectionObserver, virtualized lists with @tanstack/react-virtual, and scroll position restoration.

YepAPI/skills

Chat UI components, streaming responses with AI SDK, context window management, and RAG patterns.

Skills relacionados