Web · 2025
Torneitos
Plataforma de gestión de torneos deportivos con brackets automáticos, fixture y tabla de posiciones.

Contexto
Torneitos es una plataforma web desarrollada para simplificar la creación y gestión instantánea de torneos informales de fútbol en consolas (FIFA/FC) entre amigos. El proyecto nació para resolver la desorganización y la fragmentación habitual de estas juntadas, donde para armar un torneo era necesario abrir múltiples pestañas e interfaces separadas para el sorteo de equipos y creación del torneo.
Motivación
La motivación principal fue centralizar y agilizar todo el flujo de organización en una sola herramienta accesible en segundos y sin necesidad de crear cuentas.
Se diseñó el proceso para resolver la experiencia completa en 4 pasos simples: cargar la lista de participantes, seleccionar el catálogo de equipos (o crear el tuyo), sortear la asignación de camisetas mediante una ruleta interactiva para agregarle emoción a la previa, y definir el formato de competición.
Qué hice
- Inyección de Dependencias y Persistencia Intercambiable (Express & Node.js): Desarrollo de la API REST utilizando el patrón Factory/DI (
createApp), permitiendo alternar la capa de datos entre el cliente nativo de PostgreSQL (pg) y la SDK de Supabase sin modificar rutas ni controladores. - Algoritmo de Fixture Round-Robin (
roundRobin.js): Implementación del algoritmo de rotación cíclica para la generación automática de calendarios de torneos (con soporte para ida y vuelta), garantizando cruces equitativos y distribución ordenada de fechas (round) y llaves (slot). - Cómputo en Base de Datos (PostgreSQL Views): Delegación del cálculo de tablas de posiciones generales y estadísticas acumuladas anuales a vistas SQL avanzadas (
annual_standings_view), optimizando la latencia y la consistencia de datos. - Validación de Contratos y Schemas (Zod): Sanitización y validación estricta de todos los payloads recibidos por las rutas de la API mediante esquemas Zod antes de su procesamiento.
- Sistema de Acceso por Tokens en URL (React Router DOM): Gestión de roles mediante enlaces seguros para separar las acciones de administración reservadas al creador de la vista pública para espectadores.