Introduction
What the EuroLeague Basketball website is, how these docs are organised, and where to go next.
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
- New to the repo? Installation gets it running locally.
- Want a route through the docs for your job? Find your way around has a short tour of the repository and an ordered reading list per role.
- Asking "does the site do X?" What the site does is the catalogue of every feature area, with its status.
- Looking for a command or a variable? Commands and Environment variables.
- Met an unfamiliar word? The Glossary defines the house terms.