diff --git a/frontend/Containerfile b/frontend/Containerfile index d1ccb7282..907665a45 100644 --- a/frontend/Containerfile +++ b/frontend/Containerfile @@ -1,5 +1,5 @@ # Containerfile for Podman - Frontend -FROM docker.io/node:20-alpine AS builder +FROM docker.io/node:20-alpine@sha256:eabac870db94f7342d6c33560d6613f188bbcf4bbe1f4eb47d5e2a08e1a37722 AS builder WORKDIR /app @@ -16,7 +16,7 @@ ENV VITE_API_URL=$VITE_API_URL RUN npm run build # Production stage with nginx - rootless configuration -FROM docker.io/nginxinc/nginx-unprivileged:alpine +FROM docker.io/nginxinc/nginx-unprivileged:alpine@sha256:285b776f6694a03fce74d62d38876311d759a40b0d54b5b2bf0113701bc2edb6 # Remove default config RUN rm -rf /etc/nginx/conf.d/* diff --git a/frontend/Dockerfile b/frontend/Dockerfile index bc50ea9d3..7d4bbf083 100644 --- a/frontend/Dockerfile +++ b/frontend/Dockerfile @@ -1,4 +1,4 @@ -FROM node:20-alpine AS builder +FROM node:20-alpine@sha256:eabac870db94f7342d6c33560d6613f188bbcf4bbe1f4eb47d5e2a08e1a37722 AS builder # Add security updates RUN apk --no-cache add git @@ -18,7 +18,7 @@ COPY . . RUN npm run build # Final stage - optimized nginx -FROM nginx:1.25-alpine +FROM nginx:1.25-alpine@sha256:516475cc129da42866742567714ddc681e5eed7b9ee0b9e9c015e464b4221a00 # Install security updates RUN apk --no-cache add ca-certificates diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 9ed4ee0cf..0443f930a 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -16,31 +16,31 @@ "zustand": "^5.0.2" }, "devDependencies": { - "@eslint/js": "^9.16.0", - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/react": "^16.0.1", - "@testing-library/user-event": "^14.5.2", + "@eslint/js": "9.34.0", + "@testing-library/jest-dom": "6.8.0", + "@testing-library/react": "16.3.0", + "@testing-library/user-event": "14.6.1", "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", - "@typescript-eslint/eslint-plugin": "^8.18.0", - "@typescript-eslint/parser": "^8.18.0", - "@vitejs/plugin-react": "^4.3.4", - "@vitest/coverage-v8": "^2.1.8", - "autoprefixer": "^10.4.20", - "eslint": "^9.16.0", - "eslint-plugin-react": "^7.37.2", - "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-react-refresh": "^0.4.14", - "globals": "^15.12.0", - "jsdom": "^26.0.0", - "postcss": "^8.4.49", - "prettier": "^3.2.5", - "prettier-plugin-tailwindcss": "^0.5.11", - "tailwindcss": "^3.4.16", - "typescript": "^5.7.2", - "vite": "^5.4.11", - "vite-bundle-analyzer": "^0.10.3", - "vitest": "^2.1.8" + "@typescript-eslint/eslint-plugin": "8.42.0", + "@typescript-eslint/parser": "8.42.0", + "@vitejs/plugin-react": "4.7.0", + "@vitest/coverage-v8": "2.1.9", + "autoprefixer": "10.4.21", + "eslint": "9.34.0", + "eslint-plugin-react": "7.37.5", + "eslint-plugin-react-hooks": "5.2.0", + "eslint-plugin-react-refresh": "0.4.20", + "globals": "15.15.0", + "jsdom": "26.1.0", + "postcss": "8.5.6", + "prettier": "3.6.2", + "prettier-plugin-tailwindcss": "0.5.14", + "tailwindcss": "3.4.17", + "typescript": "5.9.2", + "vite": "5.4.19", + "vite-bundle-analyzer": "0.10.6", + "vitest": "2.1.9" } }, "node_modules/@adobe/css-tools": { diff --git a/frontend/package.json b/frontend/package.json index 730ac199a..e7856fb71 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -35,29 +35,29 @@ "devDependencies": { "@types/react": "^18.3.12", "@types/react-dom": "^18.3.1", - "@vitejs/plugin-react": "^4.3.4", - "autoprefixer": "^10.4.20", - "postcss": "^8.4.49", - "tailwindcss": "^3.4.16", - "typescript": "^5.7.2", - "vite": "^5.4.11", - "vite-bundle-analyzer": "^0.10.3", - "vitest": "^2.1.8", - "@vitest/coverage-v8": "^2.1.8", - "@testing-library/react": "^16.0.1", - "@testing-library/jest-dom": "^6.6.3", - "@testing-library/user-event": "^14.5.2", - "jsdom": "^26.0.0", - "eslint": "^9.16.0", - "@eslint/js": "^9.16.0", - "@typescript-eslint/parser": "^8.18.0", - "@typescript-eslint/eslint-plugin": "^8.18.0", - "eslint-plugin-react": "^7.37.2", - "eslint-plugin-react-hooks": "^5.0.0", - "eslint-plugin-react-refresh": "^0.4.14", - "prettier": "^3.2.5", - "prettier-plugin-tailwindcss": "^0.5.11", - "globals": "^15.12.0" + "@vitejs/plugin-react": "4.7.0", + "autoprefixer": "10.4.21", + "postcss": "8.5.6", + "tailwindcss": "3.4.17", + "typescript": "5.9.2", + "vite": "5.4.19", + "vite-bundle-analyzer": "0.10.6", + "vitest": "2.1.9", + "@vitest/coverage-v8": "2.1.9", + "@testing-library/react": "16.3.0", + "@testing-library/jest-dom": "6.8.0", + "@testing-library/user-event": "14.6.1", + "jsdom": "26.1.0", + "eslint": "9.34.0", + "@eslint/js": "9.34.0", + "@typescript-eslint/parser": "8.42.0", + "@typescript-eslint/eslint-plugin": "8.42.0", + "eslint-plugin-react": "7.37.5", + "eslint-plugin-react-hooks": "5.2.0", + "eslint-plugin-react-refresh": "0.4.20", + "prettier": "3.6.2", + "prettier-plugin-tailwindcss": "0.5.14", + "globals": "15.15.0" }, "prettier": { "semi": false,