Skip to content

retrovertigo1981/auratom

Repository files navigation

Aura Tournament OM App — Community Tournament Operations Manager

Open source tool for organizing TCG tournaments with professional standards. Designed for local communities without access to official Play! Pokémon software.


Why does this project exist?

The official Tournament Operations Manager (TOM) from The Pokémon Company is only available to officially recognized stores. Organized communities without that recognition lack access to the tool, yet they still want to play with the same rules and structure as official tournaments.

Aura Tournament OM App replicates the full competitive logic: Swiss system, OMW%/OOMW% tiebreakers, age divisions, Top Cut, and Age-Modified Swiss. It also adds features the official TOM lacks: online registration, on-site check-in, and an accumulated community ranking.

Not SaaS. It is a tool for a specific community. Any community can clone the repository and deploy their own instance.

Not official. It does not integrate with Play! Tools or Pokémon Company championship points.


Supported Games

Game Divisions Status
Pokémon TCG Junior / Senior / Masters (by age) ✅ MVP
Mitos y Leyendas General (no divisions) ✅ MVP
Magic: The Gathering Configurable 🔜 Post-MVP
One Piece TCG Configurable 🔜 Post-MVP
Gundam TCG Configurable 🔜 Post-MVP

Adding a new game is as simple as inserting rows in the games and division_configs tables — no code changes required.


System Roles

Role Description Access
admin Creates tournaments, manages judges, confirms payments, does check-in Login required
judge Operates the tournament, reports results Login required
player Registers online, views history and ranking Google Login
public Views pairings and standings for the active tournament No login

Tournament Workflow

1. Admin creates tournament → selects game, configures rounds, opens registration
2. Players register online (Google OAuth, 2 clicks)
3. Admin confirms payments manually
4. Tournament day: admin performs on-site check-in for attendees
5. Only checked-in players enter Round 1
6. Judges report results round by round
7. Players view pairings in real-time from their phones (QR code)
8. System generates Swiss rounds with official standards
9. Automatic Top Cut based on attendance
10. Results saved to community ranking


Tech Stack

Layer Technology
Framework Next.js 15 (App Router) + TypeScript
Styling TailwindCSS v4 + shadcn/ui
Client State Zustand
Server State TanStack Query
Database Supabase (PostgreSQL)
Auth Supabase Auth (Google OAuth + email)
Real-time Supabase Realtime (WebSockets)
Tests Vitest (unit) + Playwright (E2E)
Deploy Vercel

Repository Structure

auratom/
├── src/
│   ├── app/
│   │   ├── (dashboard)/     # Admin and judges (auth required)
│   │   ├── (public)/        # Public player view (no login)
│   │   └── api/             # API Routes
│   ├── core/                # Pure algorithms (framework-agnostic)
│   │   ├── swiss/           # Swiss pairing
│   │   ├── tiebreakers/     # OMW%, OOMW%, H2H
│   │   ├── topcut/          # Elimination bracket
│   │   └── age-division/    # Division calculation
│   ├── db/                  # Supabase queries
│   ├── schemas/             # Zod schemas and types
│   ├── components/          # React components
│   ├── stores/              # Zustand stores
│   └── lib/                 # Helpers (auth, utils)
├── specs/                   # Feature specs
├── tests/
│   ├── unit/                # Vitest
│   └── e2e/                 # Playwright
├── docs/                    # Technical documentation
├── supabase/
│   └── migrations/          # Versioned SQL migrations
└── CLAUDE.md                # AI agent instructions


Documentation

Document Description
CLAUDE.md Instructions for the AI agent
docs/ALGORITMOS.md Full mathematical specification of Swiss
docs/DATABASE_SCHEMA.md Supabase schema with all tables
docs/ARQUITECTURA.md Architecture decisions (ADRs)
docs/METODOLOGIA.md Spec-Driven flow + Harness Engineering
docs/ROADMAP.md Development phases and checklist
specs/ Individual specs per feature

Project Status

Phase 0 — Initial project setup.


Aura Tournament OM App — Gestor de Operaciones de Torneos Comunitarios

Herramienta open source para organizar torneos TCG con estándares profesionales. Diseñada para comunidades locales sin acceso al software oficial de Play! Pokémon.


¿Por qué existe este proyecto?

El TOM oficial de The Pokémon Company solo está disponible para tiendas reconocidas oficialmente. Comunidades organizadas sin ese reconocimiento no tienen acceso a la herramienta, pero sí quieren jugar con las mismas reglas y estructura de los torneos oficiales.

Aura Tournament OM App replica la lógica competitiva completa: sistema suizo, desempates OMW%/OOMW%, divisiones de edad, Top Cut y Age-Modified Swiss. Además agrega lo que el TOM oficial no tiene: inscripciones online, check-in presencial, y ranking comunitario acumulado.

No es SaaS. Es una herramienta para una comunidad específica. Cualquier comunidad puede clonar el repositorio y desplegar su propia instancia.

No es oficial. No se integra con Play! Tools ni championship points de Pokémon Company.


Juegos soportados

Juego Divisiones Estado
Pokémon TCG Junior / Senior / Masters (por edad) ✅ MVP
Mitos y Leyendas General (sin divisiones) ✅ MVP
Magic: The Gathering Configurable 🔜 Post-MVP
One Piece TCG Configurable 🔜 Post-MVP
Gundam TCG Configurable 🔜 Post-MVP

Agregar un nuevo juego es insertar filas en la tabla games y division_configs — sin cambios de código.


Roles del sistema

Rol Descripción Acceso
admin Crea torneos, gestiona jueces, confirma pagos, hace check-in Login requerido
judge Opera el torneo, reporta resultados Login requerido
player Se inscribe online, ve su historial y ranking Login con Google
público Ve pairings y standings del torneo activo Sin login

Flujo de un Torneo

1. Admin crea torneo → elige juego, configura rondas, abre inscripciones
2. Jugadores se inscriben online (Google OAuth, 2 clicks)
3. Admin confirma pagos manualmente
4. Día del torneo: admin hace check-in presencial de asistentes
5. Solo los checked-in entran a la Ronda 1
6. Jueces reportan resultados ronda a ronda
7. Jugadores ven pairings en tiempo real desde sus celulares (QR code)
8. Sistema genera rondas Swiss con estándares oficiales
9. Top Cut automático según asistencia
10. Resultados guardados en ranking comunitario


Stack Tecnológico

Capa Tecnología
Framework Next.js 15 (App Router) + TypeScript
Estilos TailwindCSS v4 + shadcn/ui
Estado cliente Zustand
Estado servidor TanStack Query
Base de datos Supabase (PostgreSQL)
Auth Supabase Auth (Google OAuth + email)
Tiempo real Supabase Realtime (WebSockets)
Tests Vitest (unit) + Playwright (E2E)
Deploy Vercel

Estructura del Repositorio

auratom/
├── src/
│   ├── app/
│   │   ├── (dashboard)/     # Admin y jueces (auth requerido)
│   │   ├── (public)/        # Vista pública jugadores (sin login)
│   │   └── api/             # API Routes
│   ├── core/                # Algoritmos puros (sin framework)
│   │   ├── swiss/           # Emparejamiento suizo
│   │   ├── tiebreakers/     # OMW%, OOMW%, H2H
│   │   ├── topcut/          # Bracket de eliminación
│   │   └── age-division/    # Cálculo de divisiones
│   ├── db/                  # Queries a Supabase
│   ├── schemas/             # Zod schemas y tipos
│   ├── components/          # Componentes React
│   ├── stores/              # Zustand stores
│   └── lib/                 # Helpers (auth, utils)
├── specs/                   # Specs de features
├── tests/
│   ├── unit/                # Vitest
│   └── e2e/                 # Playwright
├── docs/                    # Documentación técnica
├── supabase/
│   └── migrations/          # SQL migrations versionadas
└── CLAUDE.md                # Instrucciones para agente IA


Documentación

Documento Descripción
CLAUDE.md Instrucciones para el agente IA
docs/ALGORITMOS.md Especificación matemática completa del Swiss
docs/DATABASE_SCHEMA.md Esquema de Supabase con todas las tablas
docs/ARQUITECTURA.md Decisiones de arquitectura (ADRs)
docs/METODOLOGIA.md Flujo Spec-Driven + Harness Engineering
docs/ROADMAP.md Fases de desarrollo y checklist
specs/ Specs individuales por feature

Estado del proyecto

Fase 0 — Configuración inicial del proyecto.

About

Open source tool for organizing TCG tournaments with professional standards. Designed for local communities without access to official Play! Pokémon software, with extensible support for multiple TCGs.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors