Skip to main content
This page documents every major technology used in apps/site/, including the role each plays and the actual package versions declared in package.json.

Frontend Framework

Next.js

Package: [email protected] Next.js is the full-stack framework that powers the site. It provides:
  • Static Site Generation (SSG) and Incremental Static Regeneration (ISR)
  • The catch-all [...path].tsx dynamic route handler
  • Image optimization via next/image
  • Build-time configuration via next.config.mjs
Why Next.js? It is versatile, hackable, stable, and — critically — supports fully static export builds, a requirement from the Node.js Technical Steering Committee.
The site uses output: 'export' when NEXT_PUBLIC_STATIC_EXPORT=true is set, producing a self-contained build/ directory with no server runtime requirement.

React

Package: react@19 (catalog), react-dom@^19.2.4 React is the UI rendering engine. The site uses React 19 with the React Compiler (babel-plugin-react-compiler) enabled for automatic memoization.

Styling System

Tailwind CSS

Package: tailwindcss (catalog), @tailwindcss/postcss@~4.2.1 Tailwind is the utility-first CSS framework that provides the design system foundation. It integrates via the PostCSS plugin.

PostCSS

Used for CSS preprocessing. Active plugins:
PluginPurpose
@tailwindcss/postcssEnables Tailwind CSS integration
postcss-calc@~10.1.1Resolves calc() expressions at build time

CSS Modules

CSS Modules provide scoped, component-level styles. Layout-specific styles live in apps/site/layouts/layouts.module.css. This prevents class name collisions between components.

Content Management

MDX

Package: @mdx-js/mdx@^3.1.1 MDX extends Markdown with JSX support, allowing React components to be embedded directly in content pages. All content in apps/site/pages/en/ is authored in Markdown or MDX.

Remark

Remark is the Markdown processing ecosystem. Active plugins:
PluginVersionPurpose
remark-gfm~4.0.1GitHub Flavored Markdown (tables, strikethrough, task lists)
@vcarl/remark-headings~0.1.0Generates heading metadata for table of contents
remark-reading-time~2.0.2Calculates estimated reading time

Rehype

Rehype is the HTML processing ecosystem, applied after Remark. Active plugins:
PluginVersionPurpose
rehype-autolink-headings~7.1.0Adds anchor links to headings
rehype-slug~6.0.0Generates id attributes on headings

UI Components

Radix UI

Radix UI provides accessible, unstyled component primitives. Active packages:
PackageVersionPurpose
@radix-ui/react-tabs^1.1.13Tabbed code block UI
@radix-ui/react-tooltip^1.2.8Tooltips
@radix-ui/react-avatar^1.1.11Avatar components
@radix-ui/react-dialog^1.1.15Modal dialogs
@radix-ui/react-dropdown-menu^2.1.16Dropdown menus
@radix-ui/react-label^2.1.8Form labels
@radix-ui/react-select^2.2.6Select inputs
@radix-ui/react-separator^1.1.8Separator / dividers
Why Radix UI? It takes a minimalistic, component-focused approach, includes WAI-ARIA compliance out of the box, and allows the team to focus on design without re-implementing accessibility semantics.

Heroicons

Package: @heroicons/react@~2.2.0 SVG icon library used across UI components.

Shiki

Package: shiki@~3.23.0 (via @node-core/rehype-shiki workspace package) Shiki provides syntax highlighting for all code blocks. It runs at build time and outputs pre-highlighted HTML, eliminating the need for client-side highlighting libraries. The workspace package packages/rehype-shiki/ wraps Shiki as a Rehype plugin.

Internationalization

next-intl

Package: next-intl@~4.8.3 next-intl is the i18n library. It provides:
  • The useTranslations() hook for accessing translation messages in components
  • ICU Message Syntax support for pluralization, gender, and interpolation
  • Next.js middleware integration for locale detection
The site uses a custom subfolder content structure rather than Next.js’s built-in i18n routing. See i18n Overview for details.

gray-matter

Package: gray-matter@~4.0.3 Parses YAML frontmatter from Markdown files. Used by the build pipeline to extract title, layout, description, and other page metadata.

Orama

Packages: @orama/core@^1.2.19, @orama/ui@^1.5.4 Orama Cloud provides the site-wide search functionality. Content is indexed and synced via scripts/orama-search/sync-orama-cloud.mjs.

Development Tools

Storybook

Storybook is used for component development and visual testing in the packages/ui-components/ workspace package. It provides component isolation and a visual development environment.

Chromatic

Chromatic integrates with Storybook to run automated visual regression tests. It detects UI changes between pull requests.

Playwright

Package: @playwright/test@^1.58.1 Playwright handles end-to-end (E2E) testing. Tests live in apps/site/tests/e2e/. They validate critical user journeys and cross-browser compatibility.

Husky

Husky manages Git hooks to enforce code quality checks before commits.

TypeScript

Package: typescript (catalog) The entire site is written in TypeScript. Type checking runs in CI (pnpm lint:types). Production builds skip type checking (typescript: { ignoreBuildErrors: true }) since CI already guarantees correctness.

Package Manager

pnpm

pnpm manages the monorepo workspace. Individual packages are published to the npm registry. The workspace uses a catalog: feature for shared dependency version pinning.
Vercel’s custom install command is pnpm install --prod --frozen-lockfile. Because of this, build-time dependencies must be listed under dependencies, not devDependencies, in apps/site/package.json.

Build docs developers (and LLMs) love