QBSheet for tournaments

QBSheet connects to tournament-control software over QBTCP. Rooms score in a browser, continue scoring when the server is unreachable, and return results as QBJ.

Scope

QBSheet and tournament control

QBSheet scores the game in one room. The schedule, the room assignments, and the tournament's statistics belong to tournament-control software. Connected scoring requires tournament-control software that implements QBTCP.

Tournament control
Owns the schedule, assigns teams to rooms, and collects results into the tournament's statistics.
QBSheet
Scores the game in one room, and continues to work without a network connection.
QBTCP
The protocol between them. It is an open specification, and no product owns it. Read the specification.
QBJ
The document format for game and tournament data. An assignment sent over the network is the same document tournament control could write to disk. Read the profile.

Connected rounds

A connected round

Each room follows the same four steps.

  1. Pair

    The room joins the tournament.

    A scorekeeper enters the server address and the pairing code for the room. QBSheet exchanges the code for a credential scoped to that room. There are no user accounts and nothing to sign in to.

  2. Receive

    The assignment arrives.

    Tournament control returns the room’s current assignment as a QBJ document. QBSheet stores it on the device before scoring depends on any further network call.

  3. Score

    The room scores the game.

    Scoring runs on the device. While the server is reachable, QBSheet sends snapshots of the current game state, which tournament control can display.

  4. Return

    The result is submitted.

    QBSheet submits the completed game to the server as QBJ. A retry after a timeout is identified as the same result rather than recorded as a second game.

Connection failures

Network loss during a round

Scoring continues. The assignment and every accepted question are already on the device. Snapshots resume when the connection returns, and the room sends its current state rather than replaying the updates it missed.

A second device on the same game

One device holds write access to a session at a time. Another device can take it over. A takeover is started by a person rather than resolved automatically between devices, and the previous writer is notified at its next write instead of being overwritten silently.

The server rejects the room

An expired credential, a disallowed origin, or an assignment superseded by a newer revision does not unmount the scorer or discard scored work. The room continues scoring locally and the result remains available for download.

A result is not accepted

Games remain on the device that scored them and stay downloadable as QBJ. Acceptance by the server is not a reason for a room to delete its local copy.

Setup

Requirements

Tournament-control software
Software that implements QBTCP, reachable from the rooms. QBSheet connects to the server you run.
A browser per room
A current browser on any device. Nothing is installed, and a room that has loaded QBSheet once can score without a network connection.
A secure origin
Serve QBSheet over HTTPS. Offline support uses a service worker, which browsers install only on a secure origin. Self-hosting guide.
Pairing codes
Issued by your tournament-control software. A code pairs one room and is exchanged for a credential that reaches that room only.

Without a server

Scoring without a connection

Connected scoring is one of three ways to start a game. A room that cannot reach the server can open a QBJ file or enter the teams, players, and scoring rules directly, and scores the game with the same scoresheet, the same corrections, and the same QBJ export.

A game started this way is not connected, so its result is handed over as a downloaded file rather than submitted. What scoring a game involves.

Try QBSheet before the tournament

QBSheet includes a guided practice game that runs without a tournament server.