FROM node:24-bookworm-slim AS build
WORKDIR /app

COPY package.json package-lock.json* ./
COPY apps/server/package.json apps/server/package.json
COPY apps/client/package.json apps/client/package.json
RUN npm install --workspace @voxnest/server --include-workspace-root

COPY apps/server apps/server
RUN npm --workspace @voxnest/server run build

FROM node:24-bookworm-slim AS runtime
ENV NODE_ENV=production
WORKDIR /app

COPY package.json package-lock.json* ./
COPY apps/server/package.json apps/server/package.json
COPY apps/client/package.json apps/client/package.json
RUN npm install --omit=dev --workspace @voxnest/server --include-workspace-root && npm cache clean --force

COPY --from=build /app/apps/server/dist apps/server/dist
RUN mkdir -p /app/data && chown -R node:node /app
USER node
EXPOSE 8080
CMD ["node", "apps/server/dist/index.js"]
