Skip to main content
Petanque Life

Tournament Discovery & Registration

F04.03 34 features Planned

At a glance

A global discovery and registration layer that lets any player find tournaments anywhere in the world, register online with license validation and multi-currency payment, and gives organizers waiting lists, bulk entry, seeding, and configurable cross-tenant publication scopes (PRIVATE, ORGNODE, TENANT, GLOBAL).

How it works

Discovery operates on a cross-tenant index of every published competition. Players search globally or by map with radius and date filters and narrow by country, region, format, discipline, team format, level, and open/invitational status. "Traveling player" mode flips the search around — pick a destination and a date range and the platform returns events in walking or driving range. Recommendations layer on the player's ELO and stated preferences.

Following a foreign tournament hooks the player into notifications, while the detail page surfaces rules, venue, entry fee, accommodation tips, and the tournament's working language; an "open to foreign players" flag, cross-border requirements, and temporary license/day-pass info reduce friction. Registration runs an end-to-end pipeline: individual or team entry, license validation (active, age category, ranking eligibility), team composition checks (correct player count, mixed-gender rules), substitution rules, optional waiting list, late registration handling, ranking-based seeding, multi-currency payment, and a confirmation receipt in the player's language. Clubs use bulk registration to enter several teams at once.

Cross-border registration accepts a valid license from another tenant, applying any temporary-license rules the host federation configured. Publication scope (PL-T007) determines who sees the event: PRIVATE (only owner), ORGNODE (the org and its ancestors/descendants — visibility service expands the tree), TENANT (whole federation), or GLOBAL (every tenant). Scope is changed via PUT /competitions/{id}/publication with an audit log; only federation-admins may publish GLOBAL (club-admins get 403).

Cross-tenant consumers hit GET /public/competitions/global (paginated, cached 15 min) or GET /public/tenants/{code}/competitions for per-federation listings; internal queries filter by scope query param. A backfill migration set existing competitions to TENANT and a compound index (publication_scope, status, start_date) keeps queries fast.

Key capabilities

  • Global tournament search, map-based finder, traveling-player mode, ELO recommendations
  • Cross-border discovery: foreign-friendly flag, requirements info, temporary licenses
  • Online registration with license, age, ranking, team composition, and substitution validation
  • Waiting list, late registration, bulk team entry, ranking-based seeding, multi-currency payment
  • Publication scope enum (PRIVATE/ORGNODE/TENANT/GLOBAL) with audit log on every change
  • Cross-tenant public APIs (global feed cached 15 min, per-tenant listings)
  • ORGNODE ancestor/descendant expansion via visibility service, GLOBAL gated to federation-admin

In practice

A Belgian player on holiday in Provence opens map-based search around Aix-en-Provence for the upcoming weekend and finds three tournaments flagged open to foreign players. He reads the detail page in French, checks that his FRBP license is accepted under the temporary-license rule, and registers solo for the doublette consolante. License validation passes, payment goes through in EUR, and he gets an immediate receipt.

The organizer's federation-admin had earlier set publication scope to GLOBAL so the event surfaced in the cross-tenant feed; the change was audited. The Belgian's club-admin friend tries to publish her own event GLOBAL and gets a 403 — only the federation-admin can.

Features in this subsystem

34
ID Status Features
F04.03.01 Shipped Global tournament search (find competitions in any country) — PL-F0403a ✅ PL-F0403a
F04.03.02 Shipped Map-based tournament finder (search by location, radius, dates) — PL-F0403a ✅ PL-F0403a
F04.03.03 Shipped Filter by: country, region, format, discipline, team format, level, open/invitational — PL-F0403a ✅ PL-F0403a
F04.03.04 Shipped "Traveling player" mode (show tournaments near a destination + date range) — PL-F0403a ✅ PL-F0403a
F04.03.05 Shipped Tournament recommendations based on ELO level and preferences — PL-F0403a ✅ PL-F0403a
F04.03.06 Shipped Follow tournaments in other countries (get notifications) — PL-F0403b ✅ PL-F0403b
F04.03.07 Shipped Tournament detail page: rules, venue, entry fee, accommodation tips, language — PL-F0403b ✅ PL-F0403b
F04.03.08 Shipped "Open to foreign players" flag on tournaments (organizer marks this) — PL-F0403b ✅ PL-F0403b
F04.03.09 Shipped Cross-border entry requirements info (license validity, temporary license) — PL-F0403b ✅ PL-F0403b
F04.03.10 Shipped Temporary license / day pass for foreign players (federation configurable) — PL-F0403b ✅ PL-F0403b
F04.03.11 Shipped Tournament saved/wishlist (plan your tournament calendar) — PL-F0403c ✅ PL-F0403c
F04.03.12 Shipped Travel group finder (other players going to same tournament) — PL-F0403c ✅ PL-F0403c
F04.03.13 Shipped Online registration (individual and team) — PL-F0403c ✅ PL-F0403c
F04.03.14 Shipped Registration validation (license check, age category, ranking eligibility) — PL-F0403c ✅ PL-F0403c
F04.03.15 Shipped Registration payment integration (multi-currency for international) — PL-F0403c ✅ PL-F0403c
F04.03.16 Shipped Registration deadline management — PL-F0403d ✅ PL-F0403d
F04.03.17 Shipped Waiting list management — PL-F0403d ✅ PL-F0403d
F04.03.18 Shipped Late registration handling — PL-F0403d ✅ PL-F0403d
F04.03.19 Shipped Team composition validation (correct number of players, mixed rules) — PL-F0403d ✅ PL-F0403d
F04.03.20 Shipped Substitution rules and management — PL-F0403d ✅ PL-F0403d
F04.03.21 Shipped Registration confirmation and receipt — PL-F0403e ✅ PL-F0403e
F04.03.22 Shipped Bulk registration (club enters multiple teams) — PL-F0403e ✅ PL-F0403e
F04.03.23 Shipped Seeding based on rankings — PL-F0403e ✅ PL-F0403e
F04.03.24 Shipped Cross-border registration (register for tournament in another nation with valid license) — PL-F0403e ✅ PL-F0403e
F04.03.25 Shipped Registration language (show tournament info in player's language) — PL-F0403e ✅ PL-F0403e
F04.03.26 Shipped PublicationScope enum (PRIVATE/ORGNODE/TENANT/GLOBAL) on Competition — PL-T007 ✅ PL-T007
F04.03.27 Shipped PUT /competitions/{id}/publication endpoint with audit log — PL-T007 ✅ PL-T007
F04.03.28 Shipped GET /public/competitions/global cross-tenant public API (paginerad, cachad 15 min) — PL-T007 ✅ PL-T007
F04.03.29 Shipped GET /public/tenants/{code}/competitions per-federation public listing — PL-T007 ✅ PL-T007
F04.03.30 Shipped Scope filter on GET /competitions (query param scope=private tenant|orgnode|global) — PL-T007 | ✅ PL-T007
F04.03.31 Shipped GLOBAL scope requires federation-admin (club-admin 403 policy) — PL-T007 ✅ PL-T007
F04.03.32 Shipped Competition visibility service with ORGNODE ancestor/descendant expansion — PL-T007 ✅ PL-T007
F04.03.33 Shipped Backfill migration (existing competitions → TENANT scope) — PL-T007 ✅ PL-T007
F04.03.34 Shipped Compound index (publication_scope, status, start_date) for queries — PL-T007 ✅ PL-T007