From df83c9876d13c065eb37421bc3ddac7556a24384 Mon Sep 17 00:00:00 2001 From: root Date: Sun, 28 Jun 2026 00:05:39 -0400 Subject: [PATCH] FIX PRODUCTION PAGES --- .env.docker.production.example | 7 ++++++- .env.docker.production.generated | 3 ++- .env.example | 8 +++++++- .gitea/workflows/build-and-deploy.yml | 5 ++++- Dockerfile.production | 8 +++++++- turbo.json | 5 +++++ 6 files changed, 31 insertions(+), 5 deletions(-) diff --git a/.env.docker.production.example b/.env.docker.production.example index b503737..fce8025 100644 --- a/.env.docker.production.example +++ b/.env.docker.production.example @@ -47,11 +47,16 @@ NEXT_PUBLIC_API_URL=https://api.rentaldrivego.ma/api/v1 # ── Frontend public URLs ────────────────────────────────────────────────────── +# SITE_ORIGIN is the canonical public origin for robots.txt, sitemap, and metadata. +# Required for production builds. Must be an absolute https:// URL with no trailing slash. +SITE_ORIGIN=https://rentaldrivego.ma + # Marketplace sits at the domain root (Traefik routes /dashboard and /admin to their apps) NEXT_PUBLIC_MARKETING_URL=https://rentaldrivego.ma -NEXT_PUBLIC_MARKETPLACE_URL=https://rentaldrivego.ma +NEXT_PUBLIC_STOREFRONT_URL=https://rentaldrivego.ma/storefront NEXT_PUBLIC_DASHBOARD_URL=https://rentaldrivego.ma/dashboard NEXT_PUBLIC_ADMIN_URL=https://rentaldrivego.ma/admin +NEXT_PUBLIC_HOMEPAGE_URL=https://rentaldrivego.ma NEXT_PUBLIC_PUBLIC_SITE_DOMAIN=rentaldrivego.ma DASHBOARD_URL=https://rentaldrivego.ma/dashboard ADMIN_URL=https://rentaldrivego.ma/admin diff --git a/.env.docker.production.generated b/.env.docker.production.generated index 90ae0fd..54ee717 100644 --- a/.env.docker.production.generated +++ b/.env.docker.production.generated @@ -27,7 +27,8 @@ NEXT_PUBLIC_API_URL=https://api.example.com/api/v1 # Frontend public URLs NEXT_PUBLIC_MARKETING_URL=https://example.com -NEXT_PUBLIC_MARKETPLACE_URL=https://example.com +NEXT_PUBLIC_HOMEPAGE_URL=https://example.com +NEXT_PUBLIC_STOREFRONT_URL=https://example.com/storefront NEXT_PUBLIC_DASHBOARD_URL=https://example.com/dashboard NEXT_PUBLIC_ADMIN_URL=https://example.com/admin NEXT_PUBLIC_PUBLIC_SITE_DOMAIN=example.com diff --git a/.env.example b/.env.example index 280124e..20fce7b 100644 --- a/.env.example +++ b/.env.example @@ -74,10 +74,16 @@ NEXT_PUBLIC_FIREBASE_APP_ID=1:123456789:web:abc123 REDIS_URL=redis://localhost:6379 # ─── App URLs ────────────────────────────────────────────────── +# SITE_ORIGIN is the canonical public origin for robots.txt, sitemap, and metadata. +# Required for production builds. Must be an absolute https:// URL with no trailing slash. +# SITE_ORIGIN=https://your-production-domain.example + + NEXT_PUBLIC_MARKETING_URL=http://localhost:3000 NEXT_PUBLIC_DASHBOARD_URL=http://localhost:3000/dashboard NEXT_PUBLIC_ADMIN_URL=http://localhost:3000/admin -NEXT_PUBLIC_MARKETPLACE_URL=http://localhost:3000 +NEXT_PUBLIC_STOREFRONT_URL=http://localhost:3000/storefront +NEXT_PUBLIC_HOMEPAGE_URL=http://localhost:3000 # Public site is subdomain-based; use this for local dev: NEXT_PUBLIC_PUBLIC_SITE_DOMAIN=localhost:3003 DASHBOARD_URL=http://localhost:3000/dashboard diff --git a/.gitea/workflows/build-and-deploy.yml b/.gitea/workflows/build-and-deploy.yml index c6fccb0..4c75491 100644 --- a/.gitea/workflows/build-and-deploy.yml +++ b/.gitea/workflows/build-and-deploy.yml @@ -57,13 +57,15 @@ jobs: NEXT_PUBLIC_STOREFRONT_URL: ${{ secrets.NEXT_PUBLIC_STOREFRONT_URL }} NEXT_PUBLIC_DASHBOARD_URL: ${{ secrets.NEXT_PUBLIC_DASHBOARD_URL }} NEXT_PUBLIC_ADMIN_URL: ${{ secrets.NEXT_PUBLIC_ADMIN_URL }} + SITE_ORIGIN: ${{ secrets.SITE_ORIGIN }} run: | for variable in \ NEXT_PUBLIC_API_URL \ NEXT_PUBLIC_HOMEPAGE_URL \ NEXT_PUBLIC_STOREFRONT_URL \ NEXT_PUBLIC_DASHBOARD_URL \ - NEXT_PUBLIC_ADMIN_URL + NEXT_PUBLIC_ADMIN_URL \ + SITE_ORIGIN do value="${!variable}" if [ -z "$value" ]; then @@ -105,6 +107,7 @@ jobs: NEXT_PUBLIC_STOREFRONT_URL=${{ secrets.NEXT_PUBLIC_STOREFRONT_URL }} NEXT_PUBLIC_DASHBOARD_URL=${{ secrets.NEXT_PUBLIC_DASHBOARD_URL }} NEXT_PUBLIC_ADMIN_URL=${{ secrets.NEXT_PUBLIC_ADMIN_URL }} + SITE_ORIGIN=${{ secrets.SITE_ORIGIN }} deploy: name: Deploy to VPS diff --git a/Dockerfile.production b/Dockerfile.production index f731733..d0b2fc4 100644 --- a/Dockerfile.production +++ b/Dockerfile.production @@ -21,6 +21,11 @@ ARG NEXT_PUBLIC_HOMEPAGE_URL ARG NEXT_PUBLIC_STOREFRONT_URL ARG NEXT_PUBLIC_DASHBOARD_URL ARG NEXT_PUBLIC_ADMIN_URL + +# SITE_ORIGIN is the canonical public origin for robots.txt, sitemap, and metadata. +# Required in production — must be an absolute https:// URL with no path, query, or fragment. +ARG SITE_ORIGIN + ENV API_INTERNAL_URL=$API_INTERNAL_URL \ DASHBOARD_INTERNAL_URL=$DASHBOARD_INTERNAL_URL \ ADMIN_INTERNAL_URL=$ADMIN_INTERNAL_URL \ @@ -28,7 +33,8 @@ ENV API_INTERNAL_URL=$API_INTERNAL_URL \ NEXT_PUBLIC_HOMEPAGE_URL=$NEXT_PUBLIC_HOMEPAGE_URL \ NEXT_PUBLIC_STOREFRONT_URL=$NEXT_PUBLIC_STOREFRONT_URL \ NEXT_PUBLIC_DASHBOARD_URL=$NEXT_PUBLIC_DASHBOARD_URL \ - NEXT_PUBLIC_ADMIN_URL=$NEXT_PUBLIC_ADMIN_URL + NEXT_PUBLIC_ADMIN_URL=$NEXT_PUBLIC_ADMIN_URL \ + SITE_ORIGIN=$SITE_ORIGIN RUN npm ci RUN npm run db:generate diff --git a/turbo.json b/turbo.json index 00ae2e8..b8c82d3 100644 --- a/turbo.json +++ b/turbo.json @@ -1,6 +1,11 @@ { "$schema": "https://turbo.build/schema.json", "globalDependencies": ["**/.env.*local"], + "globalPassThroughEnv": [ + "SITE_ORIGIN", + "NEXT_PUBLIC_HOMEPAGE_URL", + "NEXT_PUBLIC_STOREFRONT_URL" + ], "tasks": { "build": { "dependsOn": ["^build"],