Skip to main content
Petanque Life

Competition Calendar

F04.01 8 features Planned

At a glance

A federation-spanning competition calendar that captures every sanctioned event from world championships down to local club meets. Date conflicts are detected automatically across levels, approvals flow through a regional > national > continental chain, and the public can subscribe via iCal/webcal with notifications and reminders.

How it works

The calendar treats every sanctioned event as a first-class object scoped to one of five levels — world, continental, national, regional, or club — and tagged with an event type (championship, open, league, friendly, training). When a club or district drafts an event, the system pulls the active season definition for the tenant, validates the dates against existing entries at the same and neighbouring levels, and surfaces any collision (overlapping championship, blackout window, parallel-event quota breach) before submission. Approval flows through a configurable regional > national > continental chain, with each authority signing off only on events within its remit and the next level inheriting the locked dates.

Once published, the event becomes visible in the public calendar view, where filters cut by level, region, discipline, and format. Subscribers consume the calendar through a paginated cursor API, an iCal export, or a webcal:// feed; the endpoint honours ETag and If-Modified-Since (PL-T074) so calendar clients only refetch when something actually changed, keeping millions of devices in sync without hammering the backend. Season definition runs underneath the surface — the federation declares a season window (start, end, optional sub-windows for indoor/outdoor or summer/winter) and every event must belong to one.

This makes ranking windows, qualification deadlines, and league fixtures coherent. Notifications and reminders fan out from the same source: players who follow an event, a region, or a club get push and email alerts on publication, schedule changes, and X days/hours before kick-off. Calendar events are the spine that the rest of competition management hangs from — registration windows, draws, scoring sessions, ranking recomputes, and external event proxying all key off the same canonical event record.

Key capabilities

  • Multi-level calendar covering world, continental, national, regional, and club events
  • Event-type taxonomy: championship, open, league, friendly, training
  • Automatic date-conflict detection across levels and parallel-event quotas
  • Regional > national > continental approval workflow with per-level authority
  • Public calendar with filters by level, region, discipline, and format
  • iCal export, webcal:// subscription, ETag/If-Modified-Since, cursor pagination
  • Season definition and configurable notifications/reminders for followers

In practice

A district secretary in Sweden opens the calendar, picks the upcoming season, and drafts a regional doublette open for May 18. The wizard immediately flags that the SM blackout window covers that weekend and suggests May 25 as the next free date. She accepts, submits for sanction, and the regional authority approves within two days.

The event appears on the public calendar with discipline and format filters intact. A French traveller subscribes to all Scandinavian regional events via webcal://; his calendar app picks up the new entry overnight. Forty-eight hours before the event he receives a push reminder linking straight to registration.

Features in this subsystem

8
ID Status Features
F04.01.01 Shipped Multi-level calendar (world, continental, national, regional, club) — PL-F0401a ✅ PL-F0401a
F04.01.02 Shipped Calendar event types (championship, open, league, friendly, training) — PL-F0401a ✅ PL-F0401a
F04.01.03 Shipped Date conflict detection across levels — PL-F0401a ✅ PL-F0401a
F04.01.04 Shipped Calendar approval workflow (regional > national > continental) — PL-F0401a ✅ PL-F0401a
F04.01.05 Shipped Public calendar view with filters (level, region, discipline, format) — PL-F0401b ✅ PL-F0401b
F04.01.06 Shipped Calendar subscription (iCal export, webcal://, ETag/If-Modified-Since, cursor pagination) — PL-F0401b, PL-T074 ✅ PL-F0401b, PL-T074
F04.01.07 Shipped Season definition and management — PL-F0401b ✅ PL-F0401b
F04.01.08 Shipped Calendar notifications and reminders — PL-F0401b ✅ PL-F0401b