Skip to content

English {#english}

www & admin-web Deployment Guide

Summary of deploying Next.js www (Cloudflare Pages project prego-www, static out) and admin-web (Cloudflare Worker admin-web via OpenNext, or Node/Vercel).

Overview

AppPathLocal portDeploy targetDomain
wwwapps/www3001Cloudflare Pages (prego-www, static out)www.pregoi.com
admin-webapps/admin-web3002Workers OpenNext (admin-web) or Node/Vercel (see Deploy)m.pregoi.com

Local run

From the monorepo root (workspace packages — use pnpm, not per-app npm install):

Terminal window
pnpm install
pnpm --filter prego-www run dev # → http://localhost:3001
pnpm --filter prego-admin-web run dev # → http://localhost:3002

Lint: pnpm run lint:www-admin (same as Build Pages Apps CI, .github/workflows/deploy-pages.yml). Per app: pnpm --filter prego-www run lint / pnpm --filter prego-admin-web run lint. Manual Deploy admin-web (Cloudflare Worker) runs admin-web lint before cf:deploy:with-vars.

Environment variables

www (beta.pregoi.com)

VariablePurpose
NEXT_PUBLIC_PREGO_ADMIN_BASE_URLSign in, Start for free, package selection redirect (default: https://m.pregoi.com)
NEXT_PUBLIC_PREGO_WWW_BASE_URL(Optional) canonical www URL
NEXT_PUBLIC_DEMO_ADMIN_URLGet Demo popup — Admin Portal Demo link
NEXT_PUBLIC_DEMO_EMPLOYEE_URLGet Demo popup — Employee Demo link
NEXT_PUBLIC_DEMO_SALES_MEETING_URLGet Demo popup — Book a Live Demo link

admin-web (m.pregoi.com)

VariablePurpose
NEXT_PUBLIC_PREGO_WWW_BASE_URLStep 2 Previous, Choose package link (default: https://www.pregoi.com)
NEXT_PUBLIC_PREGO_CONTROL_PLANE_URLTenant creation, Job status, subdomain check, Stripe Checkout
NEXT_PUBLIC_PREGO_AUTH_URLZuplo Auth base (email OTP, Singpass, POST /auth/google/complete-session)
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRETServer-only. App-owned Google OAuth; register redirect https://<host>/api/auth/google/callback
PREGO_ZUPLO_INTERNAL_API_KEYSame as Zuplo INTERNAL_API_KEY (server-only)
PREGO_CONTROL_PLANE_INTERNAL_API_KEYWorker Secret. Same value as Control Plane INTERNAL_API_KEY. Required for www /trial → admin /signup server verification. See Trial email (www) and admin handoff.
PREGO_JWT_COOKIE_DOMAINOptional; e.g. .pregoi.com when the session cookie must be sent to the AUTH_URL host
NEXT_PUBLIC_PREGO_BILLING_PROXY_URLBilling info (billing page)

GitHub — manual Worker deploy only: .github/workflows/deploy-admin-web-worker.yml runs pnpm --filter prego-admin-web run lint then cf:deploy:with-vars (scripts/cf-deploy-with-vars.mjs). Optional repository Variables ADMIN_GOOGLE_CLIENT_ID and ADMIN_PREGO_JWT_COOKIE_DOMAIN populate that job’s environment (not used by deploy-pages.yml).

Deploy

www (static)

Cloudflare Pages works well: monorepo root, pnpm --filter prego-www run build, output apps/www/out (output: 'export').

admin-web (server)

admin-web includes Route Handlers under app/api/* (Google OAuth code exchange). Static HTML export (out/) is disabled. Prefer Cloudflare Workers with OpenNext: pnpm --filter prego-admin-web run cf:build / cf:deploy (wrangler.jsonc). cf:deploy:with-vars is the same build+deploy plus optional Worker --var from env GOOGLE_CLIENT_ID / PREGO_JWT_COOKIE_DOMAIN (scripts/cf-deploy-with-vars.mjs); GitHub Deploy admin-web uses it—see the note above the Deploy heading. R2 bucket prego-admin-opennext-cache (incremental cache): create via prego-pulumi pulumi up (stack output r2_admin_opennext_cache_bucket_name) or wrangler r2 bucket create once. Alternatives: Node (next start), Vercel, Docker. See apps/admin-web/README.md and tenant onboarding flow §1.1.

If the build fails

  • Lint / CI: pnpm run lint:www-admin must pass (ESLint --max-warnings 0) before builds in Build Pages Apps; fix or adjust eslint.config.mjs in each app if a rule is intentionally relaxed.
  • www: Confirm output directory apps/www/out (or out if project root is apps/www), output: 'export' in next.config.
  • admin-web: cf:build produces .open-next/ for Workers; plain next build still emits .next/. Do not use Pages with out/ for this app.

Flow

Package selection happens on prego-www; onboarding (Sign in, Sign up) happens on admin-web.

flowchart LR
  A[www.pregoi.com] --> B[/pricing]
  B --> C[Choose plan]
  C --> D[m.pregoi.com]
  D --> E[Sign in / Sign up]
  E --> F[Onboarding → Payment → Provisioning]

Reference


한국어 {#korean}

www & admin-web 배포 가이드

Next.js 기반 www(Cloudflare Pages prego-www)와 admin-web(Worker admin-web, OpenNext) 또는 Node/Vercel 배포 요약.

개요

경로포트(로컬)배포 대상도메인
wwwapps/www3001Cloudflare Pages (prego-www, 정적 out)www.pregoi.com
admin-webapps/admin-web3002Workers OpenNext(admin-web, cf:build) 또는 Node/Vercel (Deploy)m.pregoi.com

로컬 실행, 환경 변수, Cloudflare Pages 배포, 빌드 실패 시 확인

위 영문 섹션 참조. (모노레포 루트에서 pnpm 로컬 실행, www/admin-web 환경 변수 표, Pages 배포, 빌드·lint 실패 시 확인.) Build Pages Apps (deploy-pages.yml)는 pnpm run lint:www-admin 후 www 빌드·admin-web cf:build·Storybook을 실행한다. 수동 Worker 배포 (deploy-admin-web-worker.yml)는 배포 전 admin-web ESLint를 실행한 뒤 cf:deploy:with-vars 를 실행한다. cf:deploy:with-vars 는 Actions와 동일한 scripts/cf-deploy-with-vars.mjs 로 배포하며, 셸의 GOOGLE_CLIENT_ID / PREGO_JWT_COOKIE_DOMAIN 을 Worker --var 로 넘길 수 있음. 선택 저장소 변수 ADMIN_GOOGLE_CLIENT_ID, ADMIN_PREGO_JWT_COOKIE_DOMAIN.github/workflows/deploy-admin-web-worker.yml 에만 쓰이며 deploy-pages.yml CI에서는 사용하지 않는다.

플로우

패키지 선택은 prego-www에서, 온보딩(Sign in, Sign up 포함)은 Worker admin-web(m.pregoi.com 등)에서 수행된다.

참조

Help