Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
Show all changes
60 commits
Select commit Hold shift + click to select a range
20332be
Redesign: Technical Setup and Project Base (#2167)
g-francesca Jan 29, 2026
31e7094
ci: add workflow for Astro site build and linting (#2168)
bjohansebas Jan 29, 2026
474d485
fix: point netlify to astro dir (#2170)
jonchurch Jan 29, 2026
e8dbc45
feat: mobile header and sidebar navigation (#2180)
g-francesca Feb 18, 2026
7f8829d
feat: tablet/desktop header and sidebar navigation (#2185)
g-francesca Feb 24, 2026
c927948
feat: redesign footer (#2196)
g-francesca Feb 25, 2026
d8ed488
feat(redesign): i18n language selection (#2197)
g-francesca Mar 2, 2026
ec12bf5
feat(redesign): Homepage Hero component (#2203)
g-francesca Mar 4, 2026
c62d32b
feat(redesign): Homepage Features and Banner component (#2204)
g-francesca Mar 4, 2026
758adc0
feat(redesign): Alert component (#2205)
g-francesca Mar 5, 2026
c262737
feat(redesign): blog listing page (#2207)
g-francesca Mar 13, 2026
5e8ed6a
feat: add PR link checking workflow, fix links and add fallback to en…
bjohansebas Mar 15, 2026
d9dc34b
Adjust layout content width for responsive sidebar (#2208)
GroophyLifefor Mar 22, 2026
861c8ee
docs: application object overview and express object overview (#2216)
bjohansebas Mar 22, 2026
3857ab5
feat: integrate sitemap functionality and add robots.txt (#2217)
bjohansebas Mar 22, 2026
ad775da
feat: add RSS feed functionality (#2218)
bjohansebas Mar 22, 2026
4d6c42a
feat(redesign): search/chat widget powered by Orama (#2213)
g-francesca Mar 24, 2026
6f97026
chore: add pre commit husky setup (#2195)
ShubhamOulkar Mar 29, 2026
d769095
feat: add redirects for blog posts and legacy API links (#2222)
bjohansebas Mar 29, 2026
84cc5f0
docs: better overviews for apis (#2223)
bjohansebas Mar 30, 2026
02e93e0
feat: enhance layout with Open Graph and Twitter Card metadata (#2224)
bjohansebas Mar 30, 2026
ff16fcd
docs: use the new alert component in docs (#2225)
bjohansebas Mar 30, 2026
336900d
feat(redesign): redesign blog post page (#2228)
g-francesca Mar 30, 2026
af130a1
docs: update headings for consistency across documentation (#2229)
bjohansebas Mar 30, 2026
b4c319f
feat: add Table of Contents to documentation layout (#2230)
bjohansebas Mar 30, 2026
f52cd51
feat: no use i18n folder for blog (#2231)
bjohansebas Mar 31, 2026
64ee5f1
feat: add support page and update content collections (#2232)
bjohansebas Mar 31, 2026
ce267e5
feat: support for global pages (#2233)
bjohansebas Mar 31, 2026
cc749ba
feat: move rosource to the page colection (#2234)
bjohansebas Mar 31, 2026
681cb6d
docs: resolve the last Jekyll includes (#2235)
bjohansebas Mar 31, 2026
620d01f
chore: bump astro v6 (#2236)
bjohansebas Mar 31, 2026
abee2cc
feat: add translation option for page editing in multiple languages (…
bjohansebas Mar 31, 2026
2d4e86b
docs: update more docs for the new website (#2238)
bjohansebas Mar 31, 2026
0770e94
feat: add page navigation for documentation with previous and next li…
bjohansebas Mar 31, 2026
d3e51da
feat: implement scripts for pull external documents (#2240)
bjohansebas Mar 31, 2026
f113821
feat: add RSS feed link and translations for multiple languages (#2241)
bjohansebas Mar 31, 2026
93a0f21
feat: add rehype plugins for automatic heading links and update style…
bjohansebas Mar 31, 2026
067415b
feat: add overview heading to post and table of contents for better n…
bjohansebas Mar 31, 2026
eddbe41
docs: add security.txt (#2244)
bjohansebas Mar 31, 2026
930aa59
feat: add clustering and middleware images for documentation (#2245)
bjohansebas Mar 31, 2026
e6f073d
perf: optimize hero media using WebM/WebP and reduce asset size (#2221)
ShubhamOulkar Apr 2, 2026
a993fac
feat(redesign): Documentation page fixes and improvements (#2251)
g-francesca Apr 2, 2026
e7484f2
chore: move astro project to root (#2253)
bjohansebas Apr 2, 2026
a54c19a
feat: add dependabot and better readme (#2254)
bjohansebas Apr 2, 2026
b9b3b9c
refactor: enhance breadcrumb (#2252)
ShubhamOulkar Apr 3, 2026
091996c
feat: fix crowdin config (#2256)
bjohansebas Apr 3, 2026
055a97c
docs: unify api pages (#2258)
bjohansebas Apr 3, 2026
721133d
feat: generate og images (#2259)
bjohansebas Apr 4, 2026
6a66a98
feat: add LLMS API and documentation endpoints (#2260)
bjohansebas Apr 4, 2026
9cafde4
docs: add documentation for project structure and more (#2261)
bjohansebas Apr 4, 2026
3b9f788
docs: improve migration guide to v5 (#2262)
bjohansebas Apr 4, 2026
e75a587
docs: document removed options for res.sendFile() and express.static(…
22BRS1317 Apr 4, 2026
fa7f964
docs: update routing documentation for separate versions (#2263)
bjohansebas Apr 4, 2026
b2963ed
feat: add AnnouncementBar component with announcement configuration (…
bjohansebas Apr 5, 2026
b854ba8
feat: add logo to community page (#2266)
bjohansebas Apr 5, 2026
9ecdc86
docs: improve more docs (#2267)
bjohansebas Apr 5, 2026
3df5f93
style: fix bugs, and improve layout (#2271)
bjohansebas Apr 11, 2026
d67f565
feat: add kawaii logo (#2272)
bjohansebas Apr 11, 2026
1e9ecd1
feat: update footer links to include AI Coding Assistants Policy (#2273)
bjohansebas Apr 11, 2026
f015a8f
ci: add deploy workflow (#2274)
bjohansebas Apr 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
19 changes: 19 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# EditorConfig: https://editorconfig.org
root = true

[*]
charset = utf-8
indent_style = space
indent_size = 2
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
trim_trailing_whitespace = false

[*.{yml,yaml}]
indent_size = 2

[Makefile]
indent_style = tab
4 changes: 2 additions & 2 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
# Codeowners
.github/CODEOWNERS @expressjs/docs-captains

# Blog
_posts @expressjs/express-tc
# Blog - TODO: Add once Astro blog structure is set up
# _posts @expressjs/express-tc
77 changes: 77 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
name: ci

on:
pull_request:
branches:
- redesign
pull_request_review:
types: [submitted]
push:
branches:
- redesign

# Cancel in progress workflows
# in the scenario where we already had a run going for that PR/branch/tag but then triggered a new run
concurrency:
group: "${{ github.workflow }} ✨ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}"
cancel-in-progress: true

permissions:
contents: read

jobs:
lint:
runs-on: ubuntu-latest
if: |
github.event.pull_request.draft != true &&
(github.event_name == 'pull_request_review' && github.event.review.state == 'approved') ||
github.event_name != 'pull_request_review'

steps:
- uses: actions/checkout@v6
with:
persist-credentials: false

- name: Set up Node.js
uses: actions/setup-node@v6
with:
# node-version-file: ".nvmrc" use when .nvmrc is on root of the repo
node-version: "24.13"
# cache: "npm" use when package-lock.json is on root of the repo

- name: Install Node.js dependencies
working-directory: astro
run: npm ci

- name: Run tests
working-directory: astro
shell: bash
run: npm run check

build:
name: build
runs-on: ubuntu-latest
if: |
github.event.pull_request.draft != true &&
(github.event_name == 'pull_request_review' && github.event.review.state == 'approved') ||
github.event_name != 'pull_request_review'

steps:
- uses: actions/checkout@v6
with:
persist-credentials: false

- name: Set up Node.js
uses: actions/setup-node@v6
with:
# node-version-file: ".nvmrc" use when .nvmrc is on root of the repo
node-version: "24.13"
# cache: "npm" use when package-lock.json is on root of the repo

- name: Install Node.js dependencies
working-directory: astro
run: npm ci

- name: Build Astro site
working-directory: astro
run: npm run build
10 changes: 10 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,13 @@ _site
.jekyll-metadata
vendor
.bundle

pnpm-lock.yaml
yarn.lock
bun.lockb

.astro/
dist/

.env
.env.*
8 changes: 8 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"recommendations": [
"astro-build.astro-vscode",
"esbenp.prettier-vscode",
"dbaeumer.vscode-eslint"
],
"unwantedRecommendations": []
}
11 changes: 11 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"version": "0.2.0",
"configurations": [
{
"command": "./node_modules/.bin/astro dev",
"name": "Development server",
"request": "launch",
"type": "node-terminal"
}
]
}
21 changes: 21 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"prettier.enable": true,
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[astro]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
},
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[json]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
24 changes: 24 additions & 0 deletions astro/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# build output
dist/

# generated types
.astro/

# dependencies
node_modules/

# logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*

# environment variables
.env
.env.production

# macOS-specific files
.DS_Store

# jetbrains setting folder
.idea/
1 change: 1 addition & 0 deletions astro/.nvmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
24
5 changes: 5 additions & 0 deletions astro/.prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
dist/
.astro/
node_modules/
package-lock.json
pnpm-lock.yaml
9 changes: 9 additions & 0 deletions astro/.prettierrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"semi": true,
"singleQuote": true,
"tabWidth": 2,
"useTabs": false,
"trailingComma": "es5",
"printWidth": 100,
"plugins": ["prettier-plugin-astro"]
}
129 changes: 129 additions & 0 deletions astro/CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
# Contributing to Expressjs.com

### The Official Documentation of the Express.js Framework

This is the contribution documentation for the [expressjs.com](https://github.com/expressjs/expressjs.com) website.

> [!NOTE]
> This is not the repo for Express.js framework. To contribute to the _[Express.js framework](https://github.com/expressjs/express)_, check out the [GitHub repo contributing page](https://github.com/expressjs/express?tab=contributing-ov-file) or the website's [Contributing to Express](https://expressjs.com/en/resources/contributing.html) page.

#### Need some ideas? These are some typical issues.

1. **Website issues**: If you see anything on the site that could use a tune-up, think about how to fix it.
- Display or screen sizing problems
- Mobile responsiveness issues
- Missing or broken accessibility features
- Website outages
- Broken links
- Page structure or user interface enhancements

2. **Content Issues**: Fix anything related to site content or typos.
- Spelling errors
- Incorrect/outdated Express.js documentation
- Missing content

3. **Translation Issues**: Fix any translation errors or contribute new content.
- Fix spelling errors
- Fix incorrect/poorly translated words
- Check out the [Contributing translations](#contributing-translations) section below for a contributing guide.

#### Want to work on a backlog issue?

We often have bugs or enhancements that need work. You can find these under our repo's [Issues tab](https://github.com/expressjs/expressjs.com/issues). Check out the tags to find something that's a good match for you.

#### Have an idea? Found a bug?

If you've found a bug or a typo, or if you have an idea for an enhancement, you can:

- Submit a [new issue](https://github.com/expressjs/expressjs.com/issues/new/choose) on our repo. Do this for larger proposals, or if you'd like to discuss or get feedback first.

- Make a [GitHub pull request](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request). If you have already done work, and it's ready to go, feel free to send it our way.

## Getting Started

The steps below will guide you through the Expressjs.com contribution process.

#### Step 1: (OPTIONAL) Open a New Issue

So you've found a problem that you want to fix, or have a site enhancement you want to make.

1. If you want to get feedback or discuss, open a discussion [issue](https://github.com/expressjs/expressjs.com/issues/new/choose) prior to starting work. This is not required, but encouraged for larger proposals.
- While we highly encourage this step, it is only for submissions proposing significant change. It helps us to clarify and focus the work, and ensure it aligns with overall project priorities.
- For submissions proposing minor improvements or corrections, this is not needed. You can skip this step.
- When opening an issue please give it a title and fill in the description section. The more details you provide, the more feedback we can give.

2. After receiving your issue the Express.js documentation team will respond with feedback. We read every submission and always try to respond quickly with feedback.
- For submissions proposing significant change, we encourage you to follow the review process before starting work.

#### Step 2: Get the Application Code Base

## Prerequisites

- **Node.js**: v24.13.0 or higher
- **npm**: v11.0.0 or higher (comes with Node 24)

> We recommend using [nvm](https://github.com/nvm-sh/nvm) to manage Node.js versions. This project includes an `.nvmrc` file for automatic version switching.

## Getting Started

1. **Clone the repository:**

```bash
git clone https://github.com/expressjs/expressjs.com.git
cd expressjs.com
```

2. **Install the correct Node.js version** (if using nvm):

```bash
nvm install
nvm use
```

3. **Install dependencies:**

```bash
npm install
```

4. **Start the development server:**

```bash
npm run dev
```

The site will be available at `http://localhost:4321`

## Available Scripts

| Command | Description |
| ----------------- | ---------------------------------------- |
| `npm run dev` | Start development server with hot reload |
| `npm run build` | Build production site to `./dist` |
| `npm run preview` | Preview production build locally |

## Project Structure

```
astro/
├── src/
│ ├── assets/ # Static assets (images, icons, etc.)
│ ├── components/ # Reusable UI components
│ │ ├── patterns/ # Complex UI patterns
│ │ └── primitives/ # Base UI primitives
│ ├── config/ # Configuration files
│ ├── content/ # Content collections
│ │ └── docs/ # Documentation content
│ ├── i18n/ # Internationalization
│ ├── layouts/ # Page layouts
│ ├── pages/ # Route pages
│ │ └── [lang]/ # Localized pages
│ ├── styles/ # Global styles
│ │ ├── base/ # Base styles
│ │ ├── tokens/ # Design tokens
│ │ └── utilities/ # Utility classes
│ └── utils/ # Utility functions
├── public/ # Static assets
│ └── fonts/ # Font files
└── astro.config.mjs # Astro configuration
```
7 changes: 7 additions & 0 deletions astro/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# expressjs.com

This is the repository of the website [expressjs.com](https://expressjs.com). It is hosted directly from the repository as a [GitHub Pages](https://pages.github.com/) website.

## Contributing

Any person who wants to contribute to the Website is welcome! Please read [Contributors' Guide](CONTRIBUTING.md) for more information on contributing to the Express.js documentation.
14 changes: 14 additions & 0 deletions astro/astro.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// @ts-check
import { defineConfig } from 'astro/config';
import mdx from '@astrojs/mdx';
import icon from 'astro-icon';

// https://astro.build/config
export default defineConfig({
integrations: [mdx(), icon()],
markdown: {
shikiConfig: {
theme: 'github-dark',
},
},
});
34 changes: 34 additions & 0 deletions astro/eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import eslint from '@eslint/js';
import tseslint from 'typescript-eslint';
import eslintAstroPlugin from 'eslint-plugin-astro';
import jsxA11y from 'eslint-plugin-jsx-a11y';
import eslintConfigPrettier from 'eslint-config-prettier';

export default [
// Global ignores
{
ignores: ['dist/', '.astro/', 'node_modules/', 'package-lock.json'],
},

// Base ESLint recommended rules
eslint.configs.recommended,

// TypeScript ESLint recommended rules
...tseslint.configs.recommended,

// Astro files
...eslintAstroPlugin.configs.recommended,
...eslintAstroPlugin.configs['jsx-a11y-recommended'],

// JSX Accessibility for non-Astro files
{
files: ['**/*.{jsx,tsx}'],
plugins: {
'jsx-a11y': jsxA11y,
},
rules: jsxA11y.configs.recommended.rules,
},

// Prettier - keep as last to override conflicting rules
eslintConfigPrettier,
];
Loading
Loading