# Next.js apps (web on 3000, admin on 3001) as standalone servers
ARG APP=web
FROM node:22-alpine AS build
ARG APP
ARG API_URL=http://api:4000
ARG NEXT_PUBLIC_SITE_URL=https://justicechoice.com
ARG NEXT_PUBLIC_ADMIN_URL=http://localhost:3001
WORKDIR /app
COPY package.json package-lock.json tsconfig.base.json ./
COPY packages/types ./packages/types
COPY packages/seo-engine ./packages/seo-engine
COPY apps/${APP} ./apps/${APP}
RUN npm ci --include-workspace-root --ignore-scripts -w @justice-choice/types -w @justice-choice/seo-engine -w @justice-choice/${APP}
ENV NEXT_OUTPUT=standalone NEXT_TELEMETRY_DISABLED=1 API_URL=${API_URL} NEXT_PUBLIC_SITE_URL=${NEXT_PUBLIC_SITE_URL} NEXT_PUBLIC_ADMIN_URL=${NEXT_PUBLIC_ADMIN_URL} NEXT_PUBLIC_DEMO_MODE=false
# Compile without network access: API-backed routes must render at runtime.
# API_URL still configures the browser API rewrite; it needs no live service here.
RUN --network=none npm run build -w @justice-choice/types -w @justice-choice/seo-engine && npm run build -w @justice-choice/${APP}

FROM node:22-alpine
ARG APP
ENV NODE_ENV=production NEXT_TELEMETRY_DISABLED=1 HOSTNAME=0.0.0.0
WORKDIR /app
COPY --from=build /app/apps/${APP}/.next/standalone ./
COPY --from=build /app/apps/${APP}/.next/static ./apps/${APP}/.next/static
ENV APP_DIR=apps/${APP}
USER node
CMD ["sh", "-c", "node $APP_DIR/server.js"]
