# The static bundle is architecture-independent. Build it on the native runner
# instead of running Node and pnpm under QEMU for cross-platform images.
FROM --platform=$BUILDPLATFORM node:24-alpine AS build

WORKDIR /app
RUN corepack enable

COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
COPY apps/control-plane/package.json apps/control-plane/package.json
COPY apps/web/package.json apps/web/package.json
COPY packages/browser-milestones packages/browser-milestones
COPY packages/sandbox-bridge/package.json packages/sandbox-bridge/package.json

RUN pnpm install --frozen-lockfile

COPY apps/web apps/web

ARG VITE_API_BASE_URL=
ENV VITE_API_BASE_URL=$VITE_API_BASE_URL
RUN pnpm --dir apps/web build

FROM caddy:2.11.4-alpine AS runtime

ENV PORT=5173
ENV API_UPSTREAM=http://control-plane:3583

COPY apps/web/Caddyfile /etc/caddy/Caddyfile
COPY --from=build /app/apps/web/dist /usr/share/caddy

EXPOSE 5173
