/learn provides tutorials and guides organized into topic categories. Each category is a directory under apps/site/pages/en/learn/, and each article is a Markdown file inside that directory.
Existing categories
The following nine categories already exist:getting-started
Introduction to Node.js, the V8 engine, npm, and first steps.
asynchronous-work
Event loop, callbacks, promises, async/await, and timers.
command-line
Running scripts, reading environment variables, CLI argument parsing.
http
HTTP servers, making requests, working with fetch.
manipulating-files
Reading and writing files, working with directories and paths.
modules
CommonJS, ES Modules, package.json, and the module system.
typescript
Using TypeScript with Node.js: setup, transpilation, type checking.
diagnostics
Debugging, profiling, memory analysis, and tracing.
test-runner
The built-in
node:test module and writing tests.Directory structure
Article frontmatter
Every Learn article uses thelearn layout and lists its authors as GitHub usernames:
| Field | Required | Description |
|---|---|---|
title | Yes | The article title shown in the page and sidebar |
layout | Yes | Must be learn |
authors | Yes | Comma-separated list of GitHub usernames |
description | No | Optional meta description for SEO |
canonical | No | Original URL if the content is syndicated |
Adding a new article
Create the article file
Create a new Use lowercase kebab-case for the filename. The filename becomes the URL path segment.
.md file under the appropriate category directory:Update navigation.json
Add your article to the The
sideNavigation.learn array in apps/site/navigation.json.Find the object for the relevant category and add an entry to its items map:label value is a translation key that maps to a human-readable string.Add translation keys
Open The key path must exactly match the dot-separated path in the
packages/i18n/src/locales/en.json and add the translation key referenced in navigation.json:label field of the navigation entry.Adding a new category
If your article doesn’t fit an existing category, you can create a new one:- Create a new directory under
apps/site/pages/en/learn/, for exampleapps/site/pages/en/learn/networking/. - Add articles inside that directory.
- In
navigation.json, add a new object to thesideNavigation.learnarray with alabelanditemsmap. - Add the corresponding translation keys in
packages/i18n/src/locales/en.json.
Non-translated articles automatically fall back to English content with localized navigation. You do not need to provide translations for every locale before merging.
Code blocks in Learn articles
The site supports GitHub Flavored Markdown and renders consecutive code blocks as a tabbed interface. Use language identifiers on all fenced blocks:displayName to label the tab: