# Build stage
FROM node:20-alpine AS build
WORKDIR /app
RUN corepack enable && corepack prepare pnpm@10.31.0 --activate

COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
COPY tsconfig.base.json ./
COPY shared/package.json shared/
COPY server/package.json server/
COPY web/package.json web/
RUN pnpm install --frozen-lockfile

COPY shared/ shared/
COPY server/ server/
RUN pnpm --filter @anydrop/shared run build && pnpm --filter @anydrop/server run build

# Runtime stage
FROM node:20-alpine
WORKDIR /app
RUN corepack enable && corepack prepare pnpm@10.31.0 --activate

COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
COPY shared/package.json shared/
COPY server/package.json server/
COPY web/package.json web/
RUN pnpm install --frozen-lockfile --prod --filter @anydrop/server... --ignore-scripts

COPY --from=build /app/shared/dist shared/dist
COPY --from=build /app/server/dist server/dist
COPY --from=build /app/server/src/db/migrations server/src/db/migrations

ENV PORT=3001
EXPOSE 3001

CMD ["node", "server/dist/index.js"]
