FROM node:22-bookworm-slim AS build

WORKDIR /app

COPY package.json package-lock.json ./
RUN npm ci

COPY scripts/ ./scripts/
COPY client/ ./client/
RUN node scripts/vendor.mjs

FROM node:22-bookworm-slim AS runtime

WORKDIR /app

RUN node -e "require('node:sqlite')"

COPY package.json package-lock.json ./
RUN npm ci --omit=dev

COPY client/ ./client/
COPY server/ ./server/
COPY shared/ ./shared/
COPY --from=build /app/client/vendor/ ./client/vendor/

RUN mkdir -p /data && chown node:node /data
ENV ASSETAPP_DATA_DIR=/data
VOLUME ["/data"]

ENV PORT=8080
EXPOSE 8080

USER node

CMD ["node", "server/supervisor.mjs"]
