Leagues, Tournaments, Cups
These are organizational entities to which schedules belong, encompassing various categories of play within an organization. These entities persist across seasons and are responsible for managing settings and permissions.
Office Members
Typically, associations belong to a single office, such as a region. However, we need a mechanism to indicate that associations also participate in a league, enabled by office members. This functionality extends the office hierarchy automatically, facilitating permission inheritance as well.
Currently, office members are static throughout seasons but will eventually roll over each season and limit included categories.
Schedules
Schedules correspond to specific categories within a league, tournament, or cup. Each schedule has its own individual stats and standings, which can further be divided by groups. Schedules must be created each season. When creating a schedule, you'll provide a name, category, and date range. Teams must be added to the schedule before creating games.
Groups
Groups, also known by various terms like division, divide a schedule into sub-schedules with segmented standings. Groups must be created each season and can be applicable to all categories or specific ones. Groups can also be used to restrict permissions, such as creating a league manager for a single group within a large league.
Games
Games belong to a schedule and are organized within a league, tournament, or cup office. Once created, games are publicly accessible on the website, and notifications are sent for any changes. Games have home and away teams, but both are optional in certain scenarios. Date, time, and surface are required, and if applicable, a group can be specified. Each game has a scoresheet producing stats.
Practices
Practices belong to any office and can involve zero or many teams. Date, time, and surface are required. If a game overlaps with a practice, the practice is automatically conflicted. Practices have no additional functionality currently but may later include a practice sheet for tracking lineup attendance.
Activities
Activities are basic events that teams can create, including Training, Meeting, Meal, and Accommodation. They do not affect scheduling conflicts and have a free-form text input for location, eliminating the need for location management in Play..