Structure du projet

Explainer v2 est organisé sous forme de workspace pnpm géré par Turborepo. Voici la structure de premier niveau :

explainer-v2/
├── apps/
│   ├── docs/          # Site de documentation (Astro)
│   ├── blog/          # Blog (Astro)
│   └── website/       # Page d'accueil (Astro)
├── packages/
│   ├── ui/            # Composants React UI partagés
│   ├── mdx/           # Composants MDX & plugins remark
│   └── thumbnail/     # Génération de miniatures OG
├── .github/workflows/ # Workflows CI/CD de déploiement
├── Dockerfile         # Build Docker multi-étapes
├── nginx.conf         # Configuration Nginx
├── turbo.json         # Configuration du pipeline Turborepo
├── pnpm-workspace.yaml
└── .env               # Variables d'environnement

Applications

ApplicationPortNom du packageObjectif
apps/docs4321@explainer/docsSite de documentation principal avec support multi-projets, versionnement et i18n
apps/blog4322@explainer/blogBlog avec articles, tags, flux RSS et temps de lecture
apps/website4323@explainer/websitePage marketing

Chaque application est un projet Astro indépendant qui peut être construit et déployé séparément.

Packages

PackageNomObjectifUtilisé par
packages/ui@explainer/uiButton, Card, Navbar, ThemeToggle, Dropdown, MobileMenu, LocaleSwitcherToutes les applications
packages/mdx@explainer/mdxSurcharges de composants MDX, Callout, Steps, Tabs, CodeGroup, Preview, plugins remark, configuration ShikiDocs, Blog
packages/thumbnail@explainer/thumbnailGénération d’images OG avec Satori + ResvgDocs, Blog, Website

Workspaces

Le monorepo est défini dans pnpm-workspace.yaml :

pnpm-workspace.yaml
packages:
  - 'apps/*'
  - 'packages/*'

Turborepo gère l’orchestration des tâches. La configuration turbo.json garantit que les packages sont construits avant les applications qui en dépendent :

turbo.json
{
  "tasks": {
    "build": {
      "dependsOn": ["^build"],
      "outputs": ["dist/**"]
    },
    "dev": {
      "cache": false,
      "persistent": true
    },
    "lint": {}
  }
}

Variables d’environnement

Le fichier .env à la racine configure les URLs de navigation entre applications :

VariableValeur par défautDescription
PUBLIC_WEBSITE_URLhttp://localhost:4323URL de l’application Website
PUBLIC_DOCS_URLhttp://localhost:4321URL de l’application Docs
PUBLIC_BLOG_URLhttp://localhost:4322URL de l’application Blog

Ces variables sont utilisées par la barre de navigation partagée pour lier les applications entre elles. En production, définissez-les avec vos domaines déployés (par exemple, https://explainer.dev, https://docs.explainer.dev).