-
Notifications
You must be signed in to change notification settings - Fork 0
Developer Guide
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.
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.
-
stoppedthe Bout is not running. This occurs before the first Jam begins, during halftime, or after the final period before the Bout is final. -
lineupthe Bout is running but there is no running Jam nor Timeout. The period Clock may or may not be running. -
jamthere is a Jam in progress. -
timeoutthere is a Timeout in progress. -
finalthe 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.
TODO
TODO
TODO