diff --git a/.github/workflows/check-build.yml b/.github/workflows/check-build.yml index 4d2de7041..ce26fdcf3 100644 --- a/.github/workflows/check-build.yml +++ b/.github/workflows/check-build.yml @@ -12,7 +12,7 @@ jobs: - name: Set up Node uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 - name: Install client dependencies working-directory: client @@ -29,7 +29,7 @@ jobs: - name: Set up Node uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 - name: Install server dependencies working-directory: server diff --git a/.github/workflows/check-format.yml b/.github/workflows/check-format.yml index 056e2c586..add66356f 100644 --- a/.github/workflows/check-format.yml +++ b/.github/workflows/check-format.yml @@ -12,7 +12,7 @@ jobs: - name: Set up Node uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 - name: Install client dependencies working-directory: client @@ -30,7 +30,7 @@ jobs: - name: Set up Node uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 - name: Install server dependencies working-directory: server diff --git a/.github/workflows/check-tests.yml b/.github/workflows/check-tests.yml index 8d0688eb2..9e5c8fedb 100644 --- a/.github/workflows/check-tests.yml +++ b/.github/workflows/check-tests.yml @@ -12,7 +12,7 @@ jobs: - name: Set up Node uses: actions/setup-node@v4 with: - node-version: 22 + node-version: 24 - name: Install server dependencies working-directory: server diff --git a/CLAUDE.md b/CLAUDE.md index 498858e16..fc0647bf8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -62,7 +62,7 @@ VITE_APP_LOG_LEVEL="debug" ### Monorepo Structure - `/client` - React 18 + TypeScript + Vite + MUI frontend -- `/server` - Node.js 20+ + Express + TypeScript backend +- `/server` - Node.js 24+ + Express + TypeScript backend - `/docker` - Multi-environment Docker configs (dev, staging, prod, arm, mono) ### Backend Layers diff --git a/client/package.json b/client/package.json index a9e53f93c..3d19fe825 100644 --- a/client/package.json +++ b/client/package.json @@ -2,6 +2,10 @@ "name": "client", "private": true, "version": "3.12.0", + "engines": { + "node": ">=24", + "npm": ">=11" + }, "type": "module", "scripts": { "lockfile": "docker run --rm -v \"$PWD\":/w -w /w $(grep -m1 -o 'node:[^ ]*' ../docker/Dockerfile) npm install --package-lock-only", diff --git a/docker/Dockerfile b/docker/Dockerfile index 380210f53..67f2ca54c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -4,7 +4,7 @@ # Build on the host arch (BUILDPLATFORM) rather than under QEMU — the output is # pure JS so it's arch-independent, and this avoids the esbuild host/native # binary version mismatch under emulation. -FROM --platform=$BUILDPLATFORM node:22-slim AS frontend-build +FROM --platform=$BUILDPLATFORM node:24-slim AS frontend-build WORKDIR /app/client @@ -19,7 +19,7 @@ RUN npm run build # --------------------- # Backend stage # --------------------- -FROM node:22-slim AS app +FROM node:24-slim AS app # Install ping RUN apt-get update \ diff --git a/server/package.json b/server/package.json index 49614f3e6..a9027b41b 100755 --- a/server/package.json +++ b/server/package.json @@ -30,7 +30,8 @@ "author": "", "license": "ISC", "engines": { - "node": ">=20" + "node": ">=24", + "npm": ">=11" }, "dependencies": { "@csstools/css-tokenizer": "^3.0.4",