Freelance / Proyecto para cliente · 2026
Copon
Torneos privados de prode
Plataforma para armar torneos privados de prode con puntaje automático y tabla en vivo. Está online en copon.com.ar corriendo sus primeros torneos.
Rol
Desarrollador Full Stack (proyecto para cliente)
Contexto
Freelance / Proyecto para cliente
Año
2026
Enlaces
Tecnologías: Next.jstRPCDrizzle ORMSupabaseTanStack QueryBetter-AuthTailwindshadcn/ui
Resumen
Copon es una plataforma web para armar torneos privados de prode entre amigos, el laburo o una comunidad. El que organiza crea el torneo, invita con un link, y la app puntúa cada fecha sola. No es una plataforma de apuestas: es la herramienta que reemplaza la planilla.
El problema
Un cliente vino con el prode de su grupo corriendo en un Excel y un chat de WhatsApp. Alguien tenía que cargar cada resultado a mano, recalcular la tabla y arbitrar discusiones sobre quién había pronosticado qué y cuándo. Los pronósticos llegaban tarde, los puntos salían mal y nadie podía ver la tabla sin pedir el archivo.
Lo que hacía falta no era una planilla más grande: era pronósticos que cierran con una fecha límite, puntaje calculado por el sistema y una tabla que cualquiera abra desde el celular.
Unirse a un torneo
Decisiones
- Puntaje y tabla como módulo puro (@repo/core): es la parte que tiene que estar bien, así que vive sin framework alrededor, devuelve Result<T,E> en vez de tirar excepciones y está testeada con Vitest antes de que se renderice nada.
- tRPC en vez de una capa REST: un solo desarrollador, un solo codebase, y cada router tipado del servidor al cliente, así un cambio en un payload rompe el build y no el prode.
- Drizzle ORM sobre Postgres de Supabase: el schema es TypeScript, las migraciones quedan versionadas en el repo y las queries se leen al lado de la lógica de negocio.
- Monorepo T3-turbo separado por responsabilidad (@repo/db, @repo/api, @repo/auth, @repo/core, @repo/ui, @repo/validators): la lógica pura nunca importa Next.js, así se mantiene testeable y portable.
- Better-Auth con links de invitación: entrar a un torneo tenía que ser un tap desde WhatsApp, no un formulario de registro más un código.
- Tres formatos configurables (Liga todos contra todos, Grupos más Llaves, Solo Llaves) con equipos custom o reales, fixture editable y sistemas de puntos configurables: cada grupo puntúa su prode distinto y la app tenía que absorber eso en vez de imponer un reglamento.
- TanStack Query en el cliente: la tabla y las fechas cambian mientras la gente mira el partido, así que la caché revalida en vez de que el usuario recargue.
Resultado
Copon está online en copon.com.ar corriendo los prodes del grupo del cliente, arrancando por la fase de grupos del Mundial 2026. Ya nadie carga puntos a mano: entran los resultados, la tabla se actualiza y el pozo por ronda lo resuelve el mismo código que está cubierto por tests.
Lo que me confirmó es que mantener la lógica de negocio pura se paga en la primera semana: cada discusión sobre el puntaje se cerró leyendo un test, no leyendo la interfaz.