What the site does
A catalogue of the Euro League site's feature areas, each with an honest status and a link to the detail.
This page is the catalogue of what the Euro League site can do today, area by area, with an honest status and a link to the detail. It describes what this repository ships: the content, video and basketball domains and the integrations around them. For how the site is built, see How this site is built.
For every page and the address it lives at, see the Site map.
How to read the statuses
A capability is Available when it is built, tested and shipping in this repository. It is In development when code exists but is not yet switched on or finished. It is Planned when the design or content model anticipates it but the code is not yet in place, and Not built when only a configuration slot exists. We keep these distinctions honest — a Planned row means "not yet", not "coming soon".
Several integrations are switched on by environment: the code ships, and it comes on in an environment when that environment's key or address is set (see Integrations). The whole basketball domain can also be switched off in an environment with BASKETBALL_ROUTES=false — staging runs that way until basketball is switched on there.
Capability areas at a glance
| Area | What it delivers | Status | Detail |
|---|---|---|---|
| Content & publishing | Articles, home pages, content pages, news listings with season, format and team filters, rich editorial blocks | Available | Content types & pages |
| Editorial workflow | Authoring in Contentful → publish → automatic refresh of the affected pages, including the Cloudflare edge | Available | Editorial workflow |
| Competition sections | One site for EuroLeague, EuroCup, NextGen and Corporate: per-competition home, news, video and data pages, a competition switcher, competition themes | Available | Competition sections |
| Basketball data pages | Teams, players, coaches, games, standings and stats per competition, from the Competition Engine | Available (coaches lists temporary) | Sport |
| Game Centre & live scores | One page per game, before, during and after it, with live updates; live scores on the schedule and the home page | Available | Sport |
| Header widgets | Standings, leaders, live games and game facts in the home hero and article headers | Available | Sport |
| Video | Video landing, competition video homes, detail, category pages, collections and playlists; Mux, Brightcove and YouTube playback | Available (anonymous) | The video section |
| Gated / authenticated video | Membership-tier video behind sign-in (sign-in exists; video entitlements do not) | Planned (v2) | The video section |
| Live streaming (ELTV) | EuroLeague TV: the Game Centre links out to it; an embedded player is built but not mounted | In development | The video section |
| Clips (WSC Sports) | Stories / Moments clip rows in editorial blocks and on team and player pages | Available (switched on by environment) | Integrations |
| Add to calendar (ECAL) | Fans subscribe to a competition's or a team's schedule from the Games page | Available (switched on by environment) | Sport |
| Sign-in (EuroLeague ID) | Cortex single sign-on in the site header | Available (switched on by environment) | Integrations |
| Code of Conduct report | The In-Arena Code of Conduct incident report at /en/code-of-conduct, for signed-in fans |
In development (email delivery not set up) | @v4/code-of-conduct |
| Analytics & consent | Google Tag Manager, OneTrust cookie consent with Consent Mode v2, the tracking plan's events | Available (switched on by environment) | @v4/analytics |
| Motion | Entrances, live-score and table motion to ELB's motion spec, with reduced motion respected | Available (spec in pilot) | Sport · Motion |
| Internationalisation | Locale-prefixed addresses, translatable UI copy; the site runs one locale, en-US | Available | Internationalisation |
| Right-to-left (RTL) | Full RTL language support | Planned (foundations in place) | Internationalisation |
| Integrations | Contentful, Stadion video platform, Competition Engine, WSC, ECAL, ELTV, GTM/OneTrust, Cortex SSO, Scoreplay, Figma | Available (most switched on by environment) | Integrations |
| Performance & scale | Static shells with cached data, targeted invalidation, edge caching and purge, shared Redis cache | Available | Performance & scale |
| Site search | Free-text search across the site | Not built (a configuration slot only) | Integrations |
| Gamification | Polls, quizzes and interactive fan engagement | Not built | — |
How to read "does feature X exist?"
- Retail / shop, hospitality packages, in-app content, ad slots, gamification — none of these is part of this site.
packages/model/domains.jsonstill names them (it is shared with the template), but no content type, component or route of theirs is here. - Search, ads, error monitoring and a realtime provider exist only as slots in the configuration schema (Algolia, Google Publisher Tag, Sentry, Ably, Pulselive). Nothing in the site reads them, so setting them would switch nothing on. They are Not built.
- Live game data is real — it comes from the Competition Engine, which the site polls while a game can be live. See Sport.
- A "bolt-on" is a domain composed on top of the always-present content: here
videoandbasketball(Euro League's own; the template has no basketball). See Domains & bolt-ons for how composition works.
The building blocks underneath
Every capability above is built from a shared foundation, documented for developers:
| Foundation | What it is | Detail |
|---|---|---|
| Design system | Typed, themeable UI components rebuilt from Ghost 2.0 and ELB's own Figma files | Component system · UI catalogue |
| Content model | The Contentful content types, defined as code | Content model |
| Theming | ELB's colours, fonts and competition themes from one token package (tokens-euro-league) |
Theme the site · @v4/tokens-euro-league |
| Composition | The site's domains, wired from one config file; template code taken in as pull requests | Domains & bolt-ons · Take template updates |