Introduction

What the EuroLeague Basketball website is, how these docs are organised, and where to go next.

2026-11-07

What this site is

This repository is the EuroLeague Basketball (ELB) website: one site holding every competition — EuroLeague, EuroCup, NextGen and the Corporate site — with news and editorial content from Contentful, a video section, and the basketball data pages (teams, players, coaches, games and the Game Centre, standings and stats) read from ELB's Competition Engine. Every address starts with its locale (/en/…); EuroLeague is the default section and each other competition sits under its slug (/en/eurocup/…).

It is one pnpm + Turborepo monorepo: a Next.js app (apps/web), the design system it is drawn with (Ghost, re-skinned to ELB's Figma), the Contentful model as code, and one package per integration — the Competition Engine, the video platform, WSC, EuroLeague TV, ECAL, analytics and EuroLeague ID sign-in. The site is composed of three domains: content and video, and ELB's own basketball. How this site is built explains the whole picture.

The repo was generated from the Publishing Hub v4 template, which is why most packages are named @v4/…. The template still owns that shared code, and its changes arrive here as /sync-upstream pull requests — Take template updates says what that means for what you may edit. Everything else in these docs is about this site.

How these docs are organised

Each category in the navigation has one job, so you can tell where a page lives from what you want to know:

Category What it is for
Start here Orientation: this page, installation, and a reading path per role
Guides How to do a task, step by step
Concepts What the site does, and how it is built
UI components The design system as a consumer meets it
Reference Look-up tables: commands, environment variables, content types, the glossary
Packages One page per @v4 package, linking to the concepts and guides
Workflow & CI Branches, pull requests, CI, releases and environments
AI tooling The Claude skills, agents and rules, and the docs assistants

Do it with Claude

Wherever a task can be automated by a Claude skill, the guide says so:

⚡ Do it with Claude — the named skill runs the whole flow. The guide still explains what it does and the manual path, so you understand the result and can work without it.

Living documents

Every page is marked "Living document" and dated. A docs-drift check (scripts/hooks/docs-drift.mjs) compares changed code against the pages mapped to it and flags pages that may now be out of date. In the pre-commit hook it only warns; in CI it fails the pull request on drift. It covers only the code paths its map names, and it is skipped entirely wherever no ANTHROPIC_API_KEY is configured — so keeping a page true is still the job of whoever changes the code it describes.

Where to go next