Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/SdazaP/ruTournament/llms.txt

Use this file to discover all available pages before exploring further.

The tournament creation wizard is the entry point for every event you manage in ruTournament. Accessible from the main dashboard via “Crear nuevo torneo”, the wizard walks you through three sequential steps — basic information, category configuration, and competitor registration. When you press “Finalizar y Crear” at the end, the wizard assembles a complete TournamentLocal record (including CategoryLocal[] and CompetitorLocal[] arrays) and persists it to IndexedDB via a single db.tournaments.add(tournament) call. Because ruTournament is fully offline-first, no network connection is required at any point.
1

Basic Information

Fill in the foundational details for your tournament. The Tournament Name field is required — you cannot advance to step 2 until it contains at least one non-whitespace character. The remaining fields are optional but recommended.
FieldTypeNotes
Tournament NameText inputRequired. Used as the page title throughout the app.
LocationDropdown32 Mexican states (e.g. Tlaxcala, Tlax.) plus Otro for custom locations.
DescriptionTextareaFree-form text for schedules, special rules, venue details, etc.
The tournament’s status is automatically set to activo (Active) on creation. You can change it later from the tournament dashboard’s Edit Mode — valid states are Próximamente (Upcoming), activo (Active), and Finalizado (Finalized).
Give your tournament a descriptive, unique name like “Tlaxcala Open 2026”. The name appears in the browser tab, the sidebar, and every exported view — a clear name makes navigation much easier when you manage multiple tournaments.
2

Categories & Events

Step 2 runs in two phases. Phase A lets you select which events are included; Phase B lets you configure each one in detail.Phase A — Event SelectionClick any of the 12 predefined WCA events to add it to the tournament. A second click removes it. Added events are highlighted; events are shown with their abbreviation and full name.
EventAbbreviation
3x33×3
2x22×2
4x44×4
5x55×5
6x66×6
7x77×7
3x3 OHOH
ClockCLK
MegaminxMGA
PyraminxPYR
SkewbSKB
Square-1SQ1
The tournament supports a maximum of 10 categories in total. Once that limit is reached, unselected events are disabled. To add a category that is not in the predefined list, type a name in the custom category input, choose WCA or Red Bull as the format, and click + Añadir.When you are satisfied with the selection, click “Configurar categorías” to enter Phase B.Phase B — Per-Category ConfigurationEach category is configured one at a time. Use “Siguiente” / “Anterior” to move between categories, and “Finalizar configuración” on the last one to proceed to step 3.For every category, configure:
  • SchedulestartTime and endTime (HH:MM, 24-hour). These feed directly into the Schedule timeline editor.
  • Format — toggle between WCA and Red Bull.
WCA format options:
  • Number of rounds — click ”+ Añadir ronda” to add rounds; click × to remove one. At least one round is always required.
  • Round format — AO5 (5 solves, drop best and worst) or AO3 (3 solves, mean of 3).
  • Competitors to advance — for each non-final round, choose how many top competitors move forward: 0 (Ninguno), 4, 8, 10, 12, 16, or All. The last round is automatically marked as the Final.
Red Bull format options:
  • Bracket modeAleatorio (random auto-assignment) or Manual (organiser sets match-ups in the Results section).
  • Seeding round — toggle on to add a preliminary AO3 or AO5 round before the bracket. When enabled, select the seeding format (AO5 or AO3). Competitors with the best averages in the seeding round receive priority bracket seeding.
Categories are configured one at a time in Phase B. Use the “Siguiente” and “Anterior” navigation buttons to move between them. You can return to Phase A at any time with “Volver a lista” to add or remove events before finishing configuration.
3

Competitors

Register all competitors who will participate in the tournament. The competitor table starts with one empty row; click ”+ Agregar fila” to add more.Each row contains:
  • Name field — enter the competitor’s full name.
  • Category checkboxes — one checkbox per category selected in step 2. Check every event the competitor will participate in.
Duplicate detection runs on blur (when you leave a name field). If a name already exists in another row, an inline error "Ya existe un competidor con ese nombre" appears and the row is flagged. All duplicates must be resolved before you can finalize.Empty rows (rows where the name field is blank) are silently ignored when the tournament is saved — they do not create competitor records.When the roster is complete, click “Finalizar y Crear” (the green button in the footer). The app performs a final duplicate scan across all non-empty rows. If any are found, an alert lists the conflicting names and creation is blocked until they are fixed.

What happens on save

When handleFinalize runs successfully, the wizard performs the following operations entirely in the browser:
  1. Generates a unique tournament ID using Date.now().toString() (e.g. "1751234567890").
  2. Builds CategoryLocal[] — each category receives an id of tournamentId + index. WCA categories get a rounds array derived from the Phase B configuration. Red Bull categories get a bracket round (and optionally a seeding round) plus bracketMode, hasSeeding, and seedingFormat fields.
  3. Builds CompetitorLocal[] — empty-name rows are filtered out. Each competitor receives an id of tournamentId + "c" + index. The categories array stores the matching CategoryLocal IDs (not names).
  4. Calls db.tournaments.add(tournament) — the complete TournamentLocal record is written to the RuTournamentDB IndexedDB database.
  5. Navigates to /dashboard/tournament/:id for the newly created tournament.
// Simplified save logic from TournamentCreation.tsx
const tournamentId = Date.now().toString();

const builtCategories = categories.map((cat, index) => ({
  id: tournamentId + index,
  name: cat.name,
  format: cat.format.toLowerCase(),
  startTime: cat.startTime,
  endTime: cat.endTime,
  // WCA: rounds array | Red Bull: bracket + optional seeding round
}));

const builtCompetitors = validCompetitors.map((comp, ci) => ({
  id: tournamentId + "c" + ci,
  name: comp.name,
  categories: comp.categories
    .map(catName => builtCategories.find(c => c.name === catName)?.id)
    .filter(Boolean),
}));

await db.tournaments.add({
  ...tournamentData,
  id: tournamentId,
  date: new Date().toISOString().split("T")[0],
  categories: builtCategories,
  competitors: builtCompetitors,
});
The tournament can be edited after creation. From the tournament dashboard, activate Edit Mode (the blue “Editar” button in the top-right corner) to change the name, description, location, logo, date, or status. Category and competitor management each have their own dedicated pages accessible from the sidebar.

Build docs developers (and LLMs) love