diff --git a/lib/schema.ts b/lib/schema.ts
index b3d55466..78ccc438 100644
--- a/lib/schema.ts
+++ b/lib/schema.ts
@@ -1,6 +1,11 @@
import { config } from './config';
-export const SITE_URL = (config.baseUrl as string) || 'https://klz-cables.com';
+const getSiteUrl = () => {
+ if (process.env.CI) return 'http://klz.localhost';
+ return (config.baseUrl as string) || 'https://klz-cables.com';
+};
+
+export const SITE_URL = getSiteUrl();
export const LOGO_URL = `${SITE_URL}/logo.png`;
export const getOrganizationSchema = () => ({
diff --git a/middleware.ts b/middleware.ts
index e48c9afd..59874a3e 100644
--- a/middleware.ts
+++ b/middleware.ts
@@ -53,9 +53,11 @@ export default function middleware(request: NextRequest) {
body: request.body,
});
- console.log(
- `🛡️ Proxy: Fixed internal URL leak: ${url} -> ${urlObj.toString()} | Proto: ${proto} | Host: ${hostHeader}`,
- );
+ if (process.env.NODE_ENV !== 'production' || !process.env.CI) {
+ console.log(
+ `🛡️ Proxy: Fixed internal URL leak: ${url} -> ${urlObj.toString()} | Proto: ${proto} | Host: ${hostHeader}`,
+ );
+ }
}
try {
diff --git a/scripts/audit-local.sh b/scripts/audit-local.sh
index b1bd668e..0d00f38a 100755
--- a/scripts/audit-local.sh
+++ b/scripts/audit-local.sh
@@ -9,8 +9,10 @@ echo "🚀 Starting High-Fidelity Local Audit..."
# 1. Environment and Infrastructure
export DOCKER_HOST="unix:///Users/marcmintel/.docker/run/docker.sock"
-export IMGPROXY_URL="http://img.klz.localhost"
+export IMGPROXY_URL="http://klz-imgproxy:8080"
export NEXT_URL="http://klz.localhost"
+export NEXT_PUBLIC_CI=true
+export CI=true
docker network create infra 2>/dev/null || true
docker volume create klz-cablescom_directus-db-data 2>/dev/null || true
@@ -24,6 +26,7 @@ docker-compose up -d --remove-orphans klz-db klz-cms klz-gatekeeper
echo "🏗️ Building and starting klz-app (Production)..."
# We bypass the dev override by explicitly using the base compose file
NEXT_PUBLIC_BASE_URL=$NEXT_URL \
+NEXT_PUBLIC_CI=true \
docker-compose -f docker-compose.yml up -d --build klz-app klz-imgproxy
# 4. Wait for application to be ready
@@ -47,5 +50,8 @@ echo "✅ App is healthy at $NEXT_URL"
echo "⚡ Executing Lighthouse CI..."
NEXT_PUBLIC_BASE_URL=$NEXT_URL PAGESPEED_LIMIT=5 pnpm run pagespeed:test "$NEXT_URL"
+echo "♿ Executing WCAG Audit..."
+NEXT_PUBLIC_BASE_URL=$NEXT_URL PAGESPEED_LIMIT=10 pnpm run check:wcag "$NEXT_URL"
+
echo "✨ Audit completed! Summary above."
echo "💡 You can stop the production app with: docker-compose stop klz-app"
diff --git a/styles/globals.css b/styles/globals.css
index b054cf00..da2ac485 100644
--- a/styles/globals.css
+++ b/styles/globals.css
@@ -20,7 +20,7 @@
--color-accent: #82ed20;
/* Sustainability Green */
- --color-accent-dark: #6bc41a;
+ --color-accent-dark: #14532d;
--color-accent-light: #f0f9e6;
--color-neutral: #f8f9fa;
@@ -153,6 +153,7 @@
100% {
fill-opacity: 0.2;
}
+
50% {
fill-opacity: 0.5;
}
diff --git a/tmp-lcp.json b/tmp-lcp.json
deleted file mode 100644
index 06ae6533..00000000
--- a/tmp-lcp.json
+++ /dev/null
@@ -1,89 +0,0 @@
-{
- "id": "largest-contentful-paint-element",
- "title": "Largest Contentful Paint element",
- "description": "This is the largest contentful element painted within the viewport. [Learn more about the Largest Contentful Paint element](https://developer.chrome.com/docs/lighthouse/performance/lighthouse-largest-contentful-paint/)",
- "score": 0,
- "scoreDisplayMode": "metricSavings",
- "displayValue": "5,490 ms",
- "metricSavings": {
- "LCP": 3000
- },
- "details": {
- "type": "list",
- "items": [
- {
- "type": "table",
- "headings": [
- {
- "key": "node",
- "valueType": "node",
- "label": "Element"
- }
- ],
- "items": [
- {
- "node": {
- "type": "node",
- "lhId": "page-0-IMG",
- "path": "1,HTML,1,BODY,27,DIV,0,DIV,0,DIV,0,DIV,0,DIV,2,HEADER,0,DIV,0,DIV,0,A,0,IMG",
- "selector": "div.container > div.flex-shrink-0 > a > img.h-10",
- "boundingRect": {
- "top": 20,
- "bottom": 60,
- "left": 32,
- "right": 151,
- "width": 119,
- "height": 40
- },
- "snippet": "

",
- "nodeLabel": "Startseite"
- }
- }
- ]
- },
- {
- "type": "table",
- "headings": [
- {
- "key": "phase",
- "valueType": "text",
- "label": "Phase"
- },
- {
- "key": "percent",
- "valueType": "text",
- "label": "% of LCP"
- },
- {
- "key": "timing",
- "valueType": "ms",
- "label": "Timing"
- }
- ],
- "items": [
- {
- "phase": "TTFB",
- "timing": 459.198,
- "percent": "8%"
- },
- {
- "phase": "Load Delay",
- "timing": 58.11240179828974,
- "percent": "1%"
- },
- {
- "phase": "Load Time",
- "timing": 49.75227841406388,
- "percent": "1%"
- },
- {
- "phase": "Render Delay",
- "timing": 4920.729319787644,
- "percent": "90%"
- }
- ]
- }
- ]
- },
- "guidanceLevel": 1
-}
\ No newline at end of file