From dbd43eb76c4ca34b190d65aff34c1136ddee39a6 Mon Sep 17 00:00:00 2001 From: Marc Mintel Date: Fri, 13 Feb 2026 01:30:10 +0100 Subject: [PATCH] chore: align dev environment with klz-2026 and cleanup package.json --- .env.example | 13 +++++++------ apps/web/package.json | 18 +++++++++--------- docker-compose.yml | 11 ++++++----- package.json | 4 +++- 4 files changed, 25 insertions(+), 21 deletions(-) diff --git a/.env.example b/.env.example index ef63d50..27cfd4c 100644 --- a/.env.example +++ b/.env.example @@ -10,7 +10,7 @@ # ──────────────────────────────────────────────────────────────────────────── PROJECT_NAME=mintel-me NODE_ENV=development -NEXT_PUBLIC_BASE_URL=http://mintel.me.localhost +NEXT_PUBLIC_BASE_URL=http://mintel.localhost # TARGET is used to differentiate between environments (testing, staging, production) TARGET=development NEXT_PUBLIC_TARGET=development @@ -18,8 +18,8 @@ NEXT_PUBLIC_TARGET=development # ──────────────────────────────────────────────────────────────────────────── # Docker Orchestration (Traefik) # ──────────────────────────────────────────────────────────────────────────── -TRAEFIK_HOST=mintel.me.localhost -TRAEFIK_RULE=Host(`mintel.me.localhost`) +TRAEFIK_HOST=mintel.localhost +TRAEFIK_RULE=Host("mintel.localhost") # Use AUTH_MIDDLEWARE to enable/disable Gatekeeper locally # Default is empty (disabled) for local development # Production: mintel-me-auth @@ -29,7 +29,7 @@ AUTH_MIDDLEWARE= # Directus CMS Configuration # ──────────────────────────────────────────────────────────────────────────── DIRECTUS_URL=https://cms.mintel.me -DIRECTUS_HOST=cms.mintel.me.localhost +DIRECTUS_HOST=cms.mintel.localhost DIRECTUS_KEY=some-random-key DIRECTUS_SECRET=some-random-secret DIRECTUS_DB_NAME=directus @@ -51,9 +51,10 @@ SENTRY_DSN= # Gatekeeper (Standard Auth) # ──────────────────────────────────────────────────────────────────────────── GATEKEEPER_PASSWORD=mintel -GATEKEEPER_ORIGIN=https://mintel.me/gatekeeper -COOKIE_DOMAIN=.mintel.me +GATEKEEPER_ORIGIN=http://mintel.localhost/gatekeeper +COOKIE_DOMAIN=localhost AUTH_COOKIE_NAME=mintel_gatekeeper_session +GATEKEEPER_BYPASS_ENABLED=true # ──────────────────────────────────────────────────────────────────────────── # Deployment Configuration (CI/CD only) diff --git a/apps/web/package.json b/apps/web/package.json index ea16cea..5f2b6c9 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -19,7 +19,7 @@ "video:render:button": "remotion render video/index.ts ButtonShowcase out/button-showcase.mp4 --concurrency=1 --codec=h264 --crf=16 --pixel-format=yuv420p --overwrite", "video:render:all": "npm run video:render:contact && npm run video:render:button", "pagespeed:test": "npx tsx ./scripts/pagespeed-sitemap.ts", - "cms:bootstrap": "DIRECTUS_URL=http://localhost:8055 npx tsx --env-file=.env scripts/setup-directus.ts", + "cms:bootstrap": "DIRECTUS_URL=http://cms.mintel.localhost npx tsx --env-file=.env scripts/setup-directus.ts", "cms:push:staging": "../../scripts/sync-directus.sh push staging", "cms:pull:staging": "../../scripts/sync-directus.sh pull staging", "cms:push:testing": "../../scripts/sync-directus.sh push testing", @@ -29,7 +29,12 @@ "typecheck": "tsc --noEmit" }, "dependencies": { + "@directus/sdk": "21.0.0", "@mintel/pdf": "^1.8.0", + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/context-async-hooks": "^2.1.0", + "@opentelemetry/core": "^2.1.0", + "@opentelemetry/sdk-trace-base": "^2.1.0", "@react-pdf/renderer": "^4.3.2", "@remotion/bundler": "^4.0.414", "@remotion/cli": "^4.0.414", @@ -59,13 +64,8 @@ "shiki": "^1.24.2", "tailwind-merge": "^3.4.0", "tailwindcss": "^3.4.0", - "zod": "3.22.3", - "@directus/sdk": "21.0.0", - "@opentelemetry/api": "^1.9.0", - "@opentelemetry/context-async-hooks": "^2.1.0", - "@opentelemetry/core": "^2.1.0", - "@opentelemetry/sdk-trace-base": "^2.1.0", - "webpack": "^5.96.1" + "webpack": "^5.96.1", + "zod": "3.22.3" }, "devDependencies": { "@eslint/eslintrc": "^3.3.3", @@ -92,4 +92,4 @@ "typescript": "5.9.3", "typescript-eslint": "^8.54.0" } -} \ No newline at end of file +} diff --git a/docker-compose.yml b/docker-compose.yml index 6c36e5e..092ee94 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,7 @@ services: app: image: registry.infra.mintel.me/mintel/mintel.me:${IMAGE_TAG:-latest} + build: . restart: always networks: - default @@ -10,11 +11,11 @@ services: labels: - "traefik.enable=true" # HTTP ⇒ HTTPS redirect - - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-web.rule=${TRAEFIK_RULE:-Host(`${TRAEFIK_HOST:-mintel.me.localhost}`)}" + - 'traefik.http.routers.${PROJECT_NAME:-mintel-me}-web.rule=${TRAEFIK_HOST_RULE:-Host("mintel.localhost")}' - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-web.entrypoints=web" - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-web.middlewares=redirect-https" # HTTPS router (Standard) - - "traefik.http.routers.${PROJECT_NAME:-mintel-me}.rule=${TRAEFIK_RULE:-Host(`${TRAEFIK_HOST:-mintel.me.localhost}`)}" + - 'traefik.http.routers.${PROJECT_NAME:-mintel-me}.rule=${TRAEFIK_HOST_RULE:-Host("mintel.localhost")}' - "traefik.http.routers.${PROJECT_NAME:-mintel-me}.entrypoints=websecure" - "traefik.http.routers.${PROJECT_NAME:-mintel-me}.tls.certresolver=le" - "traefik.http.routers.${PROJECT_NAME:-mintel-me}.tls=true" @@ -24,7 +25,7 @@ services: - "traefik.docker.network=infra" # Gatekeeper Router (Path-based) - - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-gatekeeper.rule=(Host(`${TRAEFIK_HOST:-mintel.me}`) && PathPrefix(`/gatekeeper`))" + - 'traefik.http.routers.${PROJECT_NAME:-mintel-me}-gatekeeper.rule=(Host("${TRAEFIK_HOST:-mintel.localhost}") && PathPrefix("/gatekeeper"))' - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-gatekeeper.entrypoints=websecure" - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-gatekeeper.tls.certresolver=le" - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-gatekeeper.tls=true" @@ -54,7 +55,7 @@ services: PORT: 3000 PROJECT_NAME: ${PROJECT_NAME:-Mintel.me} PROJECT_COLOR: ${PROJECT_COLOR:-#ff00ff} - COOKIE_DOMAIN: ${COOKIE_DOMAIN:-.mintel.me} + COOKIE_DOMAIN: ${COOKIE_DOMAIN:-localhost} AUTH_COOKIE_NAME: ${AUTH_COOKIE_NAME:-mintel_gatekeeper_session} GATEKEEPER_PASSWORD: ${GATEKEEPER_PASSWORD:-mintel} NEXT_PUBLIC_BASE_URL: ${GATEKEEPER_ORIGIN} @@ -105,7 +106,7 @@ services: start_period: 30s labels: - "traefik.enable=true" - - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-directus.rule=Host(`${DIRECTUS_HOST:-cms.mintel.me.localhost}`)" + - 'traefik.http.routers.${PROJECT_NAME:-mintel-me}-directus.rule=Host("${DIRECTUS_HOST:-cms.mintel.localhost}")' - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-directus.entrypoints=websecure" - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-directus.tls.certresolver=le" - "traefik.http.routers.${PROJECT_NAME:-mintel-me}-directus.tls=true" diff --git a/package.json b/package.json index 901df53..afe2972 100644 --- a/package.json +++ b/package.json @@ -4,8 +4,10 @@ "type": "module", "packageManager": "pnpm@10.18.3", "scripts": { + "dev": "docker network create infra 2>/dev/null || true && echo '\\n🚀 Development Environment Starting...\\n\\n📱 App: http://mintel.localhost\\n🗄️ CMS: http://cms.mintel.localhost/admin\\n🚦 Traefik: http://localhost:8080\\n\\n(Press Ctrl+C to stop)\\n' && docker-compose down --remove-orphans && docker-compose up app directus directus-db gatekeeper", + "dev:local": "pnpm -r dev", "build": "pnpm -r build", - "dev": "pnpm -r dev", + "start": "pnpm -r start", "lint": "pnpm -r lint", "test": "pnpm -r test", "lint:yaml": "node scripts/lint-yaml.js",