Skip to content

Developer Guide

Mitch Weisbrod edited this page Jan 2, 2026 · 6 revisions

Application Overview

NSO Bridge is an application designed to assist Non-Skating Officials (NSOs) with managing roller derby gameplay and production. It is designed to act as a bridge between the different parts of hosting a roller derby bout to ensure that the game day goes as smoothly as possible. Much in the same way that a skater can act as a bridge to keep the pack together, NSO Bridge is designed to act as a bridge to keep all the NSOs together.

This application is made with FastAPI. FastAPI provides an API documentation page which can be found on the /docs page of the server address. See the FastAPI documentation page for more details on API calls. In this application API calls are typically made to the /api path. For brevity, this document will exclude this prefix.

Bouts

A Bout is the primary model with which users interact. Each Bout has at least two Teams which compete against each other in Jams. A Bout has a period Clock which counts down to the end of the period. Teams may stop the period Clock by calling a Timeout. Teams may also call official reviews. In this application, official reviews are considered a sub-type of Timeout.

The primary responsibility of a Bout is to perform state management. As such, a Bout can be thought of as a state-machine. A Bout can be in one of several states.

  • stopped the Bout is not running. This occurs before the first Jam begins, during halftime, or after the final period before the Bout is final.
  • lineup the Bout is running but there is no running Jam nor Timeout. The period Clock may or may not be running.
  • jam there is a Jam in progress.
  • timeout there is a Timeout in progress.
  • final the Bout is complete and the score has been finalized.

When a Bout is created its default state is stopped. To begin a Bout, the API /bout/beginPeriod is provided. Inversely, ending a period can be done with /bout/endPeriod. A Jam may be started and stopped with /bout/startJam and /bout/stopJam. A Timeout may be started and stopped with /bout/startTimeout and /bout/stopTimeout.

Calling /bout/endPeriod again after ending the final period will finalize the Bout. Alternatively, calling /bout/beginPeriod will begin an overtime period.

Jams

TODO

Timeouts

TODO

Series

TODO

Clone this wiki locally