chore: align dev environment with klz-2026 and cleanup package.json
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 5s
Build & Deploy / 🧪 QA (push) Failing after 12s
Build & Deploy / 🏗️ Build (push) Failing after 31s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🩺 Health Check (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 2s
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 5s
Build & Deploy / 🧪 QA (push) Failing after 12s
Build & Deploy / 🏗️ Build (push) Failing after 31s
Build & Deploy / 🚀 Deploy (push) Has been skipped
Build & Deploy / 🩺 Health Check (push) Has been skipped
Build & Deploy / 🔔 Notify (push) Successful in 2s
This commit is contained in:
13
.env.example
13
.env.example
@@ -10,7 +10,7 @@
|
|||||||
# ────────────────────────────────────────────────────────────────────────────
|
# ────────────────────────────────────────────────────────────────────────────
|
||||||
PROJECT_NAME=mintel-me
|
PROJECT_NAME=mintel-me
|
||||||
NODE_ENV=development
|
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 is used to differentiate between environments (testing, staging, production)
|
||||||
TARGET=development
|
TARGET=development
|
||||||
NEXT_PUBLIC_TARGET=development
|
NEXT_PUBLIC_TARGET=development
|
||||||
@@ -18,8 +18,8 @@ NEXT_PUBLIC_TARGET=development
|
|||||||
# ────────────────────────────────────────────────────────────────────────────
|
# ────────────────────────────────────────────────────────────────────────────
|
||||||
# Docker Orchestration (Traefik)
|
# Docker Orchestration (Traefik)
|
||||||
# ────────────────────────────────────────────────────────────────────────────
|
# ────────────────────────────────────────────────────────────────────────────
|
||||||
TRAEFIK_HOST=mintel.me.localhost
|
TRAEFIK_HOST=mintel.localhost
|
||||||
TRAEFIK_RULE=Host(`mintel.me.localhost`)
|
TRAEFIK_RULE=Host("mintel.localhost")
|
||||||
# Use AUTH_MIDDLEWARE to enable/disable Gatekeeper locally
|
# Use AUTH_MIDDLEWARE to enable/disable Gatekeeper locally
|
||||||
# Default is empty (disabled) for local development
|
# Default is empty (disabled) for local development
|
||||||
# Production: mintel-me-auth
|
# Production: mintel-me-auth
|
||||||
@@ -29,7 +29,7 @@ AUTH_MIDDLEWARE=
|
|||||||
# Directus CMS Configuration
|
# Directus CMS Configuration
|
||||||
# ────────────────────────────────────────────────────────────────────────────
|
# ────────────────────────────────────────────────────────────────────────────
|
||||||
DIRECTUS_URL=https://cms.mintel.me
|
DIRECTUS_URL=https://cms.mintel.me
|
||||||
DIRECTUS_HOST=cms.mintel.me.localhost
|
DIRECTUS_HOST=cms.mintel.localhost
|
||||||
DIRECTUS_KEY=some-random-key
|
DIRECTUS_KEY=some-random-key
|
||||||
DIRECTUS_SECRET=some-random-secret
|
DIRECTUS_SECRET=some-random-secret
|
||||||
DIRECTUS_DB_NAME=directus
|
DIRECTUS_DB_NAME=directus
|
||||||
@@ -51,9 +51,10 @@ SENTRY_DSN=
|
|||||||
# Gatekeeper (Standard Auth)
|
# Gatekeeper (Standard Auth)
|
||||||
# ────────────────────────────────────────────────────────────────────────────
|
# ────────────────────────────────────────────────────────────────────────────
|
||||||
GATEKEEPER_PASSWORD=mintel
|
GATEKEEPER_PASSWORD=mintel
|
||||||
GATEKEEPER_ORIGIN=https://mintel.me/gatekeeper
|
GATEKEEPER_ORIGIN=http://mintel.localhost/gatekeeper
|
||||||
COOKIE_DOMAIN=.mintel.me
|
COOKIE_DOMAIN=localhost
|
||||||
AUTH_COOKIE_NAME=mintel_gatekeeper_session
|
AUTH_COOKIE_NAME=mintel_gatekeeper_session
|
||||||
|
GATEKEEPER_BYPASS_ENABLED=true
|
||||||
|
|
||||||
# ────────────────────────────────────────────────────────────────────────────
|
# ────────────────────────────────────────────────────────────────────────────
|
||||||
# Deployment Configuration (CI/CD only)
|
# Deployment Configuration (CI/CD only)
|
||||||
|
|||||||
@@ -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: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",
|
"video:render:all": "npm run video:render:contact && npm run video:render:button",
|
||||||
"pagespeed:test": "npx tsx ./scripts/pagespeed-sitemap.ts",
|
"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:push:staging": "../../scripts/sync-directus.sh push staging",
|
||||||
"cms:pull:staging": "../../scripts/sync-directus.sh pull staging",
|
"cms:pull:staging": "../../scripts/sync-directus.sh pull staging",
|
||||||
"cms:push:testing": "../../scripts/sync-directus.sh push testing",
|
"cms:push:testing": "../../scripts/sync-directus.sh push testing",
|
||||||
@@ -29,7 +29,12 @@
|
|||||||
"typecheck": "tsc --noEmit"
|
"typecheck": "tsc --noEmit"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@directus/sdk": "21.0.0",
|
||||||
"@mintel/pdf": "^1.8.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",
|
"@react-pdf/renderer": "^4.3.2",
|
||||||
"@remotion/bundler": "^4.0.414",
|
"@remotion/bundler": "^4.0.414",
|
||||||
"@remotion/cli": "^4.0.414",
|
"@remotion/cli": "^4.0.414",
|
||||||
@@ -59,13 +64,8 @@
|
|||||||
"shiki": "^1.24.2",
|
"shiki": "^1.24.2",
|
||||||
"tailwind-merge": "^3.4.0",
|
"tailwind-merge": "^3.4.0",
|
||||||
"tailwindcss": "^3.4.0",
|
"tailwindcss": "^3.4.0",
|
||||||
"zod": "3.22.3",
|
"webpack": "^5.96.1",
|
||||||
"@directus/sdk": "21.0.0",
|
"zod": "3.22.3"
|
||||||
"@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"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/eslintrc": "^3.3.3",
|
"@eslint/eslintrc": "^3.3.3",
|
||||||
@@ -92,4 +92,4 @@
|
|||||||
"typescript": "5.9.3",
|
"typescript": "5.9.3",
|
||||||
"typescript-eslint": "^8.54.0"
|
"typescript-eslint": "^8.54.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
app:
|
app:
|
||||||
image: registry.infra.mintel.me/mintel/mintel.me:${IMAGE_TAG:-latest}
|
image: registry.infra.mintel.me/mintel/mintel.me:${IMAGE_TAG:-latest}
|
||||||
|
build: .
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- default
|
- default
|
||||||
@@ -10,11 +11,11 @@ services:
|
|||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "traefik.enable=true"
|
||||||
# HTTP ⇒ HTTPS redirect
|
# 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.entrypoints=web"
|
||||||
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}-web.middlewares=redirect-https"
|
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}-web.middlewares=redirect-https"
|
||||||
# HTTPS router (Standard)
|
# 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}.entrypoints=websecure"
|
||||||
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}.tls.certresolver=le"
|
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}.tls.certresolver=le"
|
||||||
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}.tls=true"
|
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}.tls=true"
|
||||||
@@ -24,7 +25,7 @@ services:
|
|||||||
- "traefik.docker.network=infra"
|
- "traefik.docker.network=infra"
|
||||||
|
|
||||||
# Gatekeeper Router (Path-based)
|
# 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.entrypoints=websecure"
|
||||||
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}-gatekeeper.tls.certresolver=le"
|
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}-gatekeeper.tls.certresolver=le"
|
||||||
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}-gatekeeper.tls=true"
|
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}-gatekeeper.tls=true"
|
||||||
@@ -54,7 +55,7 @@ services:
|
|||||||
PORT: 3000
|
PORT: 3000
|
||||||
PROJECT_NAME: ${PROJECT_NAME:-Mintel.me}
|
PROJECT_NAME: ${PROJECT_NAME:-Mintel.me}
|
||||||
PROJECT_COLOR: ${PROJECT_COLOR:-#ff00ff}
|
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}
|
AUTH_COOKIE_NAME: ${AUTH_COOKIE_NAME:-mintel_gatekeeper_session}
|
||||||
GATEKEEPER_PASSWORD: ${GATEKEEPER_PASSWORD:-mintel}
|
GATEKEEPER_PASSWORD: ${GATEKEEPER_PASSWORD:-mintel}
|
||||||
NEXT_PUBLIC_BASE_URL: ${GATEKEEPER_ORIGIN}
|
NEXT_PUBLIC_BASE_URL: ${GATEKEEPER_ORIGIN}
|
||||||
@@ -105,7 +106,7 @@ services:
|
|||||||
start_period: 30s
|
start_period: 30s
|
||||||
labels:
|
labels:
|
||||||
- "traefik.enable=true"
|
- "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.entrypoints=websecure"
|
||||||
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}-directus.tls.certresolver=le"
|
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}-directus.tls.certresolver=le"
|
||||||
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}-directus.tls=true"
|
- "traefik.http.routers.${PROJECT_NAME:-mintel-me}-directus.tls=true"
|
||||||
|
|||||||
@@ -4,8 +4,10 @@
|
|||||||
"type": "module",
|
"type": "module",
|
||||||
"packageManager": "pnpm@10.18.3",
|
"packageManager": "pnpm@10.18.3",
|
||||||
"scripts": {
|
"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",
|
"build": "pnpm -r build",
|
||||||
"dev": "pnpm -r dev",
|
"start": "pnpm -r start",
|
||||||
"lint": "pnpm -r lint",
|
"lint": "pnpm -r lint",
|
||||||
"test": "pnpm -r test",
|
"test": "pnpm -r test",
|
||||||
"lint:yaml": "node scripts/lint-yaml.js",
|
"lint:yaml": "node scripts/lint-yaml.js",
|
||||||
|
|||||||
Reference in New Issue
Block a user