feat(tournaments): big-tournament hosting (P1-P13) and club chat
Stages and mixed formats: Swiss, round robin and knockout chained in any
order (Swiss then a top-8 bracket, groups then knockout), with atomic
pairing, byes, tie-breaks and advancement between stages. Knockout brackets
with multi-game ties, third place and reopen. Teams and inter-club events,
with team match scoring.
Registration: extra fields per event (phone, country across the Arab world
with its governorates, uploads), review and waitlist, check-in, members-only
and late join, fee waivers. Presentation: media, sponsors and ad slots in
the app and on the public sign-up page, link previews, certificates and a
calendar feed. Prizes settle and release with the results; disputes get
their own desk.
Ludo, domino and backgammon play in tournaments too (heats for ludo), and the
tournament screens open each game's own scene. Clubs and tournaments get
their own chat, kept in step with membership from the app, the manager
(api/org-feed.php) and the cron tick. Only tournament staff can create
events.
Fixes: match chat lines were readable by any signed-in player; deleting an
org with a club chat failed; heat reports in the same second ranked wrong;
started events showed a relative date. Two unused scenes removed.
Tests: hosting logic suites, admin, registration, bracket and detail UI,
games, links and org feed, all green on a rehearsal of this tree.
Co-Authored-By:
Claude Opus 5.5 <noreply@anthropic.com>
Showing
api/calendar.php
0 → 100644
api/certificate.php
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
api/org-feed.php
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
api/tournament-disputes.php
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
includes/comms-hooks.php
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
tests/play/org-feed.mjs
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
tests/test_hosting_forms.php
0 → 100644
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
tests/test_hosting_teams.php
0 → 100644
This diff is collapsed.
Please register or sign in to comment