FROM node:20-alpine AS builder

WORKDIR /app

ARG NEXT_PUBLIC_API_URL
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
ARG NEXT_PUBLIC_AUTH_MODE
ENV NEXT_PUBLIC_AUTH_MODE=$NEXT_PUBLIC_AUTH_MODE

COPY periscope/src/frontend/package.json periscope/src/frontend/package-lock.json ./
RUN npm ci

COPY periscope/src/frontend/ ./

# Leftover seams (shadcn/Clerk/billing/analytics) — not PinScope product.
COPY periscope/dependency/frontend/src/components/ui ./src/components/ui
COPY periscope/dependency/frontend/src/components/billing ./src/components/billing
COPY periscope/dependency/frontend/src/components/analytics ./src/components/analytics
COPY periscope/dependency/frontend/src/components/theme/clerk-theme-provider.tsx ./src/components/theme/clerk-theme-provider.tsx
COPY periscope/dependency/frontend/src/components/marketing/pricing-section.tsx ./src/components/marketing/pricing-section.tsx
COPY periscope/dependency/frontend/src/hooks/use-optional-auth.ts ./src/hooks/use-optional-auth.ts
COPY periscope/dependency/frontend/src/proxy.ts ./src/proxy.ts

# Landing captures still PinScope shots until native screenshots exist.
COPY periscope/dependency/frontend/public/report.png ./public/report.png
COPY periscope/dependency/frontend/public/datasheet.gif ./public/datasheet.gif
COPY periscope/dependency/frontend/public/derating.png ./public/derating.png

ENV NEXT_TELEMETRY_DISABLED=1

RUN echo "BUILD API URL=$NEXT_PUBLIC_API_URL AUTH_MODE=$NEXT_PUBLIC_AUTH_MODE"
RUN npm run build

FROM node:20-alpine

WORKDIR /app

ARG NEXT_PUBLIC_API_URL
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
ARG NEXT_PUBLIC_AUTH_MODE
ENV NEXT_PUBLIC_AUTH_MODE=$NEXT_PUBLIC_AUTH_MODE

ENV NODE_ENV=production
ENV NEXT_TELEMETRY_DISABLED=1

COPY --from=builder /app/package*.json ./
RUN npm ci --omit=dev

COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/src ./src
COPY --from=builder /app/content ./content
COPY --from=builder /app/package.json ./package.json
COPY --from=builder /app/next.config.ts ./next.config.ts

EXPOSE 3000

CMD ["npm","run","start"]
