From 305d79d5f45a76c04252fd90c5f0c39826d4bbe8 Mon Sep 17 00:00:00 2001 From: hamed Date: Sat, 11 Oct 2025 15:26:26 +0330 Subject: [PATCH] add DEV_MODE support to metadata generation and robots handling; update .gitignore and docker-compose for environment variables --- .gitignore | 5 ++++- app/layout.js | 17 +++++++++++++++++ app/robots.js | 11 +++++++++++ docker-compose.yml | 2 ++ next.config.js | 8 ++++++++ 5 files changed, 42 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index df0b3f6..96c3a29 100644 --- a/.gitignore +++ b/.gitignore @@ -27,6 +27,10 @@ yarn-error.log* # local env files .env*.local +.env + +# Environment files with sensitive data +.env.docker.production # vercel .vercel @@ -36,4 +40,3 @@ yarn-error.log* next-env.d.ts .idx/dev.nix .vscode/settings.json -.env diff --git a/app/layout.js b/app/layout.js index e77e338..d2b5d2a 100644 --- a/app/layout.js +++ b/app/layout.js @@ -28,6 +28,23 @@ export async function generateMetadata() { }, }; + // Add noindex meta tag when DEV_MODE is TRUE + if (process.env.DEV_MODE === 'TRUE') { + baseMetadata.robots = { + index: false, + follow: false, + nocache: true, + googleBot: { + index: false, + follow: false, + noimageindex: true, + 'max-video-preview': -1, + 'max-image-preview': 'large', + 'max-snippet': -1, + }, + }; + } + // Add canonical URL only if we're not on the main domain and matchedCity domain is not nobat724.com if (canonicalUrl && (!matchedCity || matchedCity.domain !== 'nobat724.com')) { baseMetadata.alternates = { diff --git a/app/robots.js b/app/robots.js index 7e4ec89..cd1927b 100644 --- a/app/robots.js +++ b/app/robots.js @@ -22,6 +22,17 @@ export default function robots() { const domain = getCurrentDomain(); const baseUrl = getBaseUrl(domain); + // If DEV_MODE is TRUE, disallow all crawlers + if (process.env.DEV_MODE === 'TRUE') { + return { + rules: { + userAgent: '*', + disallow: '/', + }, + }; + } + + // Normal behavior when DEV_MODE is FALSE or not set return { rules: { userAgent: '*', diff --git a/docker-compose.yml b/docker-compose.yml index 0c1d5fd..8d333ad 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,6 +8,7 @@ services: dockerfile: Dockerfile args: - NODE_ENV=${NODE_ENV} + - DEV_MODE=${DEV_MODE} - NEXT_TELEMETRY_DISABLED=1 - NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL} - NEXT_PUBLIC_CLIENT_ID=${NEXT_PUBLIC_CLIENT_ID} @@ -17,6 +18,7 @@ services: - "${APP_PORT}:3000" environment: - NEXT_TELEMETRY_DISABLED=1 + - DEV_MODE=${DEV_MODE} - NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL} - NEXT_PUBLIC_CLIENT_ID=${NEXT_PUBLIC_CLIENT_ID} - NEXT_PUBLIC_CLIENT_SECRET=${NEXT_PUBLIC_CLIENT_SECRET} diff --git a/next.config.js b/next.config.js index 29fad39..2a187b8 100644 --- a/next.config.js +++ b/next.config.js @@ -10,6 +10,14 @@ const nextConfig = { images: { domains: ["back-dev.clinic-pro.ir"], }, + env: { + // Make DEV_MODE available to the application + DEV_MODE: process.env.DEV_MODE, + }, + // Additional configuration for better Docker support + trailingSlash: false, + compress: true, + poweredByHeader: false, }; module.exports = nextConfig;