FROM node:lts AS deps

WORKDIR /workspace

ENV CI=true
ENV DEVFRONT_BUILD_OUT_DIR=/workspace/devfront/dist

RUN corepack enable && corepack prepare pnpm@10.5.2 --activate

COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
COPY common ./common
COPY devfront ./devfront

ARG VITE_DEVFRONT_PUBLIC_URL
ARG VITE_OIDC_AUTHORITY
ARG VITE_OIDC_CLIENT_ID
ARG ORGFRONT_URL
ENV VITE_DEVFRONT_PUBLIC_URL=$VITE_DEVFRONT_PUBLIC_URL
ENV VITE_OIDC_AUTHORITY=$VITE_OIDC_AUTHORITY
ENV VITE_OIDC_CLIENT_ID=$VITE_OIDC_CLIENT_ID
ENV ORGFRONT_URL=$ORGFRONT_URL

RUN pnpm install --frozen-lockfile --ignore-scripts

FROM deps AS dev

WORKDIR /workspace/devfront
ENV NODE_ENV=development

EXPOSE 5174

CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0", "--port", "5174"]

FROM deps AS build

WORKDIR /workspace/devfront
RUN npm run build

FROM node:24-alpine AS production

WORKDIR /app
ENV NODE_ENV=production
ENV FRONTEND_DIST_DIR=/app/dist
ENV PORT=5174

COPY scripts/serve_frontend_prod.mjs ./serve_frontend_prod.mjs
COPY --from=build /workspace/devfront/dist ./dist

EXPOSE 5174

CMD ["node", "./serve_frontend_prod.mjs"]
