> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cel-eleague.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Surfaces web et administration

# Surfaces Web et administration

Cette page inventorie les routes de page réellement présentes sous
`web/src/app`. Elle complète la cartographie métier par une vue exhaustive des
surfaces Next.js.

Sources principales :

* `web/src/app/**/page.tsx`
* `web/src/app/(auth)/layout.tsx`
* `web/src/app/admin/layout.tsx`
* `web/src/config/navigation.ts`
* `web/src/components/admin/config/navigation.ts`

## Couverture

Le dépôt contient actuellement **77 routes de page** :

| Surface                | Nombre | Source                                      |
| ---------------------- | -----: | ------------------------------------------- |
| Application et contenu |     28 | `web/src/app/(app)`                         |
| Authentification       |      6 | `web/src/app/(auth)`                        |
| Administration         |     33 | `web/src/app/admin`                         |
| Design system          |      8 | `web/src/app/design-system`                 |
| Routes autonomes       |      2 | `web/src/app/offline`, `web/src/app/search` |

Les handlers Next.js (`route.ts`) et les routes HTTP Convex sont documentés dans
[API HTTP Convex](./api-http.md).

## Application et contenu

Le groupe `(app)` partage le layout principal. Il mélange des pages publiques et
des espaces qui nécessitent une session.

### Compétition

| Route                    | Surface vérifiée                                            |
| ------------------------ | ----------------------------------------------------------- |
| `/`                      | Accueil produit.                                            |
| `/calendar`              | Calendrier des matchs.                                      |
| `/livefeed`              | Mur de streams et direct.                                   |
| `/leagues`               | Liste des ligues.                                           |
| `/leagues/[id]`          | Détail, classement, calendrier et statistiques d’une ligue. |
| `/leagues/[id]/register` | Inscription à une ligue.                                    |
| `/teams`                 | Liste des équipes.                                          |
| `/clubs/[id]`            | Profil public d’un club.                                    |
| `/clubs/mon-club`        | Espace du club actif de l’utilisateur.                      |
| `/matches/[id]`          | Détail d’un match.                                          |
| `/matches/[id]/lineup`   | Composition d’avant-match.                                  |
| `/players/[id]`          | Profil public d’un joueur.                                  |
| `/mercato`               | Marché des transferts.                                      |
| `/betting`               | Paris et classement des parieurs.                           |
| `/totw`                  | Team of the Week publiée.                                   |
| `/palmares`              | Redirection vers le dernier palmarès publié, ou état vide.  |
| `/palmares/[awardId]`    | Détail d’un palmarès de saison.                             |

### Contenu, compte et information

| Route                     | Surface vérifiée                                                       |
| ------------------------- | ---------------------------------------------------------------------- |
| `/journal`                | Liste des articles publiés.                                            |
| `/journal/[slug]`         | Article, commentaires et réactions.                                    |
| `/dashboard`              | Tableau de bord utilisateur.                                           |
| `/dashboard/billing`      | Redirection vers `/profile?tab=billing`.                               |
| `/profile`                | Profil, préférences et facturation.                                    |
| `/rules`                  | Règlement.                                                             |
| `/changelogs`             | Changelog utilisateur maintenu dans `web/src/constants/changelogs.ts`. |
| `/a-propos`               | Présentation de CEL.                                                   |
| `/contact`                | Contact.                                                               |
| `/privacy`                | Confidentialité.                                                       |
| `/legal/mentions-legales` | Mentions légales.                                                      |

La navigation marque `/dashboard`, `/clubs/mon-club` et `/profile` comme
nécessitant une authentification.

## Authentification

| Route                     | Rôle                                  |
| ------------------------- | ------------------------------------- |
| `/login`                  | Connexion.                            |
| `/signup`                 | Création de compte.                   |
| `/forgot-password`        | Demande de réinitialisation.          |
| `/reset-password/[token]` | Définition d’un nouveau mot de passe. |
| `/verify-email/[token]`   | Vérification d’adresse email.         |
| `/onboarding/ea`          | Vérification de l’identité EA.        |

Le layout auth redirige un utilisateur déjà connecté vers `/dashboard`, sauf
pour les routes de vérification email et d’onboarding EA qui restent accessibles
avec une session active.

## Administration

`web/src/app/admin/layout.tsx` impose une session avec
`user.role === ADMIN`. Les permissions backend plus larges de certaines
fonctions (`MODERATOR` sur des opérations ciblées) ne rendent pas pour autant le
layout admin accessible aux modérateurs.

### Gestion

* `/admin`
* `/admin/dashboard` — redirection vers `/admin`
* `/admin/announcements`
* `/admin/articles`
* `/admin/articles/new`
* `/admin/articles/[articleId]`
* `/admin/articles/[articleId]/preview`
* `/admin/articles/comments`

### Compétition

* `/admin/clubs`
* `/admin/leagues`
* `/admin/matches`
* `/admin/matches/postponed`
* `/admin/matches/lineups`
* `/admin/match-forfeits`
* `/admin/bets`
* `/admin/totw`
* `/admin/season-awards`

### Modération

* `/admin/users`
* `/admin/disputes`
* `/admin/sanctions`
* `/admin/transfers`

### Données et opérations

* `/admin/stats`
* `/admin/stats/players`
* `/admin/stats/clubs`
* `/admin/audit`
* `/admin/search`
* `/admin/billing`
* `/admin/billing/webhooks`
* `/admin/emails`
* `/admin/notifications`
* `/admin/crons`
* `/admin/crons/[cronId]`
* `/admin/settings`

La sidebar admin expose les groupes Gestion, Compétition, Modération, Données et
Système. Les routes de création, preview, détail cron, webhooks et recherche sont
des sous-surfaces ou des accès contextuels qui ne sont pas toutes des entrées de
premier niveau.

## Design system

Le dépôt publie huit routes de référence UI :

* `/design-system`
* `/design-system/colors`
* `/design-system/typography`
* `/design-system/components`
* `/design-system/recipes`
* `/design-system/spacing`
* `/design-system/effects`
* `/design-system/audit`

Le layout de ce groupe ne contient pas de garde de rôle. Ces pages décrivent les
tokens, composants, effets et recettes de l’interface CEL.

## Routes autonomes

* `/search` : recherche globale Algolia sur clubs, joueurs, matchs, articles et
  ligues.
* `/offline` : page de repli hors connexion.

## Règle de maintenance

Toute création, suppression ou redirection d’une route `page.tsx` doit mettre à
jour cette page. Une nouvelle opération HTTP doit mettre à jour
`docs/api-http.md`.
