Saltar al contenido
Proyectos

App web · tope salarial de la NBA

Disponible the-cap-room.vercel.app

The Cap Room

Consulta salarios de la NBA, compara jugadores y prueba cambios entre dos equipos según el convenio colectivo de 2023. Cada regla muestra su cálculo.

the-cap-room.vercel.app/trade
Simulador de cambios de The Cap Room: superar el límite de $8,495,000 en efectivo cambia el resultado de LEGAL a ILLEGAL, con 2 reglas incumplidas. Al reducirlo, vuelve a LEGAL.
Un cambio entre dos equipos se verifica regla por regla al ajustar el monto en efectivo.
Rol
Solo: diseño, código y publicación
Período
Desde jul 2026
Stack
TypeScript, Next.js, React, Zod, Vitest, Python

Disponible en the-cap-room.vercel.app. Código público en GitHub. Estado verificado el 22 oct de 2026.

En números

44

pruebas del motor, incluidas nóminas un dólar por encima de cada umbral de apron e impuesto

19

reglas verificadas en un solo veredicto detallado

582

jugadores en los datos de estadísticas de la liga, con fecha de corte

9

plantillas cuyos totales calcula el motor y compara con los publicados, al dólar

Fig. 1 Qué se ejecuta dentro del motor

Antes de ejecutar la app

  1. En mi computadora etl/pull_stats.py Un proceso ETL en Python descarga las estadísticas de la liga. stats.nba.com bloquea los servidores en la nube, así que se ejecuta fuera de producción.
  2. En el repo Copia de datos con fecha 582 jugadores, más 9 rosters de equipos.
  3. Antes de cada build scripts/validate-data.ts Recalcula el total de cada roster con las reglas de tope salarial del motor. Un dólar de diferencia con el total publicado detiene el build.
engine/ TypeScript puro El motor solo importa sus propios archivos, sin React, Next.js ni operaciones de entrada o salida. Cada regla del CBA indica si se cumple y muestra los números del cálculo.
  • tradeRules.ts
  • capsheet.ts
  • picks.ts
  • constants.ts
CBA de 2023: primer apron de $209,015,000, margen de $250,000 y $8,495,000 al año en efectivo para cambios.

Al verificar cada cambio

  1. Navegador La URL guarda el cambio Cada enlace guarda los detalles del cambio para poder compartirlo y volver a abrirlo.
  2. API POST /api/trade/validate Valida el cuerpo de la solicitud, carga las hojas salariales y los picks, y llama a validateTrade.
  3. Respuesta Un desglose por regla Indica si el cambio es legal y desglosa cada regla con sus cálculos. El cambio de ejemplo devuelve 19 filas.

La idea

The Cap Room ayuda a evaluar decisiones sobre el tope salarial de la NBA. Puedes consultar salarios por equipo, comparar jugadores por percentil de la liga y verificar cambios entre dos equipos según el convenio colectivo de 2023 (CBA). Cada veredicto muestra las reglas y los cálculos salariales que lo sustentan.

Lo que construí

Construí el motor del CBA en TypeScript puro. Cada import en engine/ apunta a otro archivo del motor, independiente de React, Next.js y las operaciones de entrada y salida. Implementa las reglas de 2023 para igualar salarios y transferir efectivo, incluidos el primer apron de $209,015,000, el margen de $250,000 y el límite anual de $8,495,000 en efectivo por cambios. La API devuelve una fila por regla con los cálculos correspondientes.

La propuesta completa de cada cambio cabe en una URL que se puede compartir. La interfaz usa las mismas rutas REST disponibles a través de curl. En octubre, actualicé la app a Next.js 16 y React 19 y la rediseñé con un tablero de la liga adaptado al teléfono, cambios de ejemplo con su veredicto esperado y búsqueda de jugadores con Cmd-K que ignora los acentos.

Proceso las estadísticas fuera de línea con un flujo ETL en Python y guardo copias con fecha de corte. En cada push a main, CI revisa tipos, lint, pruebas del motor, validación de datos y compilación de producción.

Retos técnicos

  1. 01 Desglosar las reglas del CBA

    Las reglas del CBA se afectan entre sí. El motor evalúa cada una por separado y devuelve un resultado con sus cálculos. Las restricciones de apron se aplican solo al superar el umbral; una nómina justo en la línea queda por debajo. Las pruebas incluyen nóminas un dólar por encima de cada línea.

    Dónde está en el código: engine/tradeRules.ts (se abre en otra pestaña)

  2. 02 Datos que tienen que cuadrar

    El motor vuelve a calcular el total salarial de cada plantilla cargada y lo compara con el total publicado del equipo. Una diferencia de un dólar hace fallar la compilación y señala cualquier discrepancia entre los datos y el motor.

    Dónde está en el código: scripts/validate-data.ts (se abre en otra pestaña)

  3. 03 Sincronizar el veredicto con la propuesta

    Mover el control de efectivo puede generar varias propuestas por segundo. La validación espera 220 ms, cancela la solicitud anterior y vincula cada respuesta con su propuesta. El último veredicto queda atenuado hasta que llegue el actual, para que una respuesta anterior no valide un cambio más reciente.

    Dónde está en el código: components/trade/TradeClient.tsx (se abre en otra pestaña)

Antes y después

AntesDespuésFuente
FrameworkNext.js 14, con un aviso de seguridad crítico que no tenía arreglo en 14.x.Next.js 16 y React 19; npm audit de las dependencias de producción reporta 0.Commit ee79ff3, 9 de octubre de 2026
Accesibilidad (axe-core)6 reglas incumplidas en unos 190 elementos, incluidos texto atenuado y un contraste de 3.6:1 en la etiqueta roja FAIL.0 infracciones en 75 ejecuciones de axe-core 4.14, con todas las páginas, paneles y menús abiertos, en anchos de 1440 a 320 px.Commits 189d4f0 y 24b396f, 9 de octubre de 2026
El tablero de la liga en un teléfonoUna gráfica recortada que se desplazaba de lado.Barras horizontales que caben en una pantalla de 390 px, con las líneas de tope, impuesto y apron marcadas.Commit 189d4f0, 9 de octubre de 2026

Lo próximo

Cambios entre tres equipos, registros de selecciones del draft para cada equipo y plantillas actualizadas.

the-cap-room.vercel.app/cap
Hoja salarial de un equipo en The Cap Room: la nómina frente al mínimo salarial, el tope, el impuesto y ambos aprons, con la diferencia en dólares para cada límite. Incluye cuatro excepciones, una disponible para el equipo.
the-cap-room.vercel.app/trade
Registro de reglas de The Cap Room para un cambio legal: 19 verificaciones, con la alerta de tope estricto primero y el cálculo completo de las dos reglas de igualación salarial.

Pruébalo

Enfoques compartidos