FROM node:24-bookworm-slim AS dependencies
WORKDIR /app
COPY package.json package-lock.json ./
COPY apps ./apps
COPY packages ./packages
COPY examples ./examples
RUN npm ci
COPY tsconfig.json ./
COPY scripts ./scripts
COPY tests ./tests

FROM dependencies AS api
ENV NODE_ENV=production HOST=127.0.0.1
RUN mkdir -p /app/.data && chown node:node /app/.data
USER node
CMD ["node","--import","tsx","apps/transfer/src/main.ts"]

FROM dependencies AS web-build
ARG VITE_APP_MODE=site
ARG VITE_MARKET_URL=https://market.example.com
ENV VITE_APP_MODE=$VITE_APP_MODE VITE_MARKET_URL=$VITE_MARKET_URL
RUN npm run build --workspace apps/web

FROM nginx:stable-alpine AS web
COPY --from=web-build /app/apps/web/dist /usr/share/nginx/html
COPY deploy/nginx.conf.template /etc/nginx/templates/default.conf.template
ENV WEB_PORT=8080 API_PORT=4100 API_PREFIX=/api MAX_BODY_SIZE=9m

FROM web AS quickstart-web
COPY deploy/nginx.quickstart.conf.template /etc/nginx/templates/default.conf.template

FROM web AS public-web
COPY deploy/nginx.public.conf.template /etc/nginx/templates/default.conf.template
