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 Staffing page (/dashboard/tournament/:id/staffing) is where you designate which competitors will serve as competition staff during each category. Every WCA competition requires people to fill three operational roles alongside the competitors who are actively solving, and ruTournament tracks those assignments at the per-category level so they can be automatically respected when generating groups and schedules. Staff data is stored on each CompetitorLocal record using two fields: roles (a global list of capabilities) and assignedRoles (a Record<string, string[]> mapping category ID to an array of role strings).

The three roles

Judge

Calls the competitor to their station, monitors the full inspection and solve attempt to ensure WCA regulations are followed, and signs off on the official result. Judges start the timer after inspection and halt the attempt if a regulation violation occurs.

Runner

Moves competitors and puzzles between the waiting area, the scrambling table, and the solving station. Runners keep the competition floor flowing by delivering covered puzzles to judges and guiding competitors to their assigned seats.

Scrambler

Applies the official scramble sequence to the puzzle before each solve attempt. Scramblers work under a cover to prevent competitors from seeing the scrambled state in advance, ensuring a fair and unbiased competition.

Assigning roles

The Staffing page displays a category selector in the header. Use it to switch between the tournament’s categories — the table below updates to show all competitors scoped to the selected category. To make changes, click “Activar Edición”. While Edit Mode is active:
  • The competitor table shows three columns: Competitor name, Competing in this category? (a Yes/No badge), and Role assignments.
  • Only competitors enrolled in the selected category have role checkboxes. Competitors not enrolled in the category see an “No participa en esta categoría” label.
  • Toggle the Judge, Runner, and Scrambler checkboxes independently. A competitor can hold any combination of roles in the same category.
Global vs. per-category roles ruTournament tracks roles at two levels:
  • competitor.roles — the competitor’s global capabilities across the whole tournament (e.g. ["judge", "scrambler"]).
  • competitor.assignedRoles — a dictionary of which roles the competitor holds in each specific category, e.g. { "17512345670": ["judge"] }.
When you assign a role in a category where the competitor does not yet have that role globally, a confirmation modal appears. The modal warns that the competitor lacks that role globally and asks whether to proceed — confirming will permanently add the role to their global capabilities in all categories. Cancel leaves the assignment unchanged. Removing a role from a category does not remove it from the competitor’s global roles array. The competitor list is sorted so that competitors who already have at least one global role appear at the top, making it easier to locate your established staff members. assignedRoles data structure
// CompetitorLocal.assignedRoles shape (from db.ts)
assignedRoles?: Record<string, string[]>;
// Example:
{
  "17512345670": ["judge", "runner"],   // category ID → roles in that category
  "17512345671": ["scrambler"],
}
The available role strings are "judge", "runner", and "scrambler" (all lowercase), matching the AVAILABLE_ROLES constant in Staffing.tsx. To save your changes, click “Activar Edición” a second time. If unsaved changes exist, the Save Changes modal offers three options:
ButtonAction
Guardar CambiosWrites the updated competitors array to IndexedDB and exits Edit Mode.
Descartar CambiosRolls back all changes to the snapshot taken when Edit Mode was activated.
CancelarDismisses the modal and returns to Edit Mode.

Roles and group generation

When the Group Generator creates competition groups for a WCA category round, it reads the assignedRoles for every competitor in that category. Competitors assigned as Judge, Runner, or Scrambler for a given group are placed into the staff pool and are not included in the competing pool for that group. This means staff assignments defined here flow directly into the auto-generated schedule: groups are built with a balanced mix of competing slots and staff slots without any manual re-ordering.
A competitor can both compete and serve as staff within the same category — just in different groups. For example, a competitor assigned as Judge may be scheduled in Group A as staff and compete in Group B. The Group Generator handles this automatically as long as the assignments are set up correctly here.
Staff assignments are locked (read-only) when the tournament status is Finalized. The Edit Mode button displays a lock icon and cannot be clicked. To reassign roles, reactivate the tournament from the tournament dashboard by changing its status back to activo.

Build docs developers (and LLMs) love