FROM node:25-alpine AS base
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"

ARG UID=1000
ARG GID=1000

RUN apk add --no-cache shadow
RUN npm install -g pnpm@^10.23.0

RUN groupmod -g $GID node
# this does not seem to be having full effect. eg /home/node gets 1337:1000 ownership despite group node having id 1337
RUN usermod -u $UID -g node node

USER node
RUN mkdir /home/node/brf
WORKDIR /home/node/brf

COPY --chown=node pnpm-lock.yaml package.json .
RUN --mount=type=cache,id=pnpm,target=/pnpm/store pnpm install --frozen-lockfile
COPY --chown=node vite.config.js .

# -------- development -------- #
FROM base AS development

ENV NODE_ENV=development

CMD pnpm run start:watch

# -------- production --------- #
FROM base AS production

COPY --chown=node client client
COPY --chown=node server server

ENV NODE_ENV=production

RUN pnpm run build

COPY --chown=node .git .git

CMD pnpm run start
