Skip to Content
ConceptsConfig Hierarchy

Config Hierarchy

Most settings in Staty live in a config object that is shared by four levels of the entity tree. When Staty needs a setting’s value for a given division, it resolves it by walking from the most specific level to the least specific and taking the first level that has a value set.

Precedence

division > league > tournament > registration

The most-specific level with a value wins. If a division doesn’t set a field, the league’s value applies; if the league doesn’t either, the tournament’s does; and so on. A field left unset everywhere falls back to its default.

This lets you set a sensible default high up (e.g. on the tournament) and override it only where it differs (e.g. one division with a different capacity).

A value only “wins” if it is actually set. Setting a field on a division overrides the same field inherited from its league or tournament.

Common config fields

FieldPurpose
capacityMax teams in a division (0 = unlimited).
hasWaitlistAllow paid overflow registrations beyond capacity.
autoPromoteAutomatically seat the next paid waitlisted team when a spot opens.
minPlayers / maxPlayersRoster size bounds.
showStatsWhether stats are visible to the public.
statDisplayModePublic aggregate stats as per-game average or season total.
gameStatsThe stat columns tracked, keyed by sport.
hideStandingsHide the public division Standings tab (independent of hideSchedules).

Registration-only exceptions

A few fields are not resolved through the hierarchy — they are read directly from the registration and should only be set there:

  • isTestMode — the registration’s Test Mode switch.
  • gateByStartDate — publish a registration page publicly while keeping sign-ups locked until startDate (see Manage Registrations).
  • gateByEndDate — close new sign-ups after registration.endDate while keeping the page (and existing teams) fully visible and editable (see Registration End-Date Gate).
  • showAllRegistrationTeams — show the public “Teams by Division” roster on the registration details page.

Both date gates are interpreted and displayed in the registration’s single timeZone (an IANA name like America/Los_Angeles) — the comparison itself uses absolute instants, so it’s timezone-correct everywhere.

Last updated on