FROM node:24-alpine AS builder
WORKDIR /app

RUN npm install -g pnpm@10.26.1

COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./
COPY lib/db/package.json lib/db/
COPY lib/api-spec/package.json lib/api-spec/
COPY lib/api-zod/package.json lib/api-zod/
COPY lib/api-client-react/package.json lib/api-client-react/
COPY scripts/package.json scripts/
COPY artifacts/api-server/package.json artifacts/api-server/
COPY artifacts/toolrate/package.json artifacts/toolrate/
COPY artifacts/mockup-sandbox/package.json artifacts/mockup-sandbox/

RUN pnpm install --no-frozen-lockfile --force

COPY . .
ENV BASE_PATH=/
RUN pnpm --filter @workspace/api-server --filter @workspace/toolrate -r --if-present run build

FROM node:24-alpine AS runner
WORKDIR /app

RUN npm install -g pnpm@10.26.1

COPY pnpm-lock.yaml pnpm-workspace.yaml package.json ./
COPY lib/db/package.json lib/db/
COPY lib/api-spec/package.json lib/api-spec/
COPY lib/api-zod/package.json lib/api-zod/
COPY lib/api-client-react/package.json lib/api-client-react/
COPY artifacts/api-server/package.json artifacts/api-server/
COPY artifacts/toolrate/package.json artifacts/toolrate/

RUN pnpm install --no-frozen-lockfile --prod --force

COPY --from=builder /app/lib/db/dist lib/db/dist
COPY --from=builder /app/artifacts/api-server/dist artifacts/api-server/dist
COPY --from=builder /app/artifacts/toolrate/dist artifacts/toolrate/dist

ENV NODE_ENV=production
ENV STATIC_DIR=/app/artifacts/toolrate/dist/public

EXPOSE 8080

CMD ["node", "--enable-source-maps", "artifacts/api-server/dist/index.mjs"]
