Hoppa till huvudinnehåll
Petanque Life

Tournament Discovery & Registration

F04.03 34 features Planerad

I korthet

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).

Så fungerar det

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.

Centrala funktioner

  • 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

I praktiken

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 i detta subsystem

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