# syntax=docker/dockerfile:1.7

# ---------- frontend build ----------
FROM node:22-alpine AS frontend-build
WORKDIR /app/frontend
COPY frontend/package.json ./
RUN npm install --no-audit --no-fund
COPY frontend/ ./
RUN npm run build

# ---------- backend build ----------
FROM node:22-alpine AS backend-build
WORKDIR /app/backend
COPY backend/package.json ./
RUN npm install --no-audit --no-fund
COPY backend/ ./
RUN npm run build

# ---------- runtime ----------
FROM node:22-alpine AS runtime
ENV NODE_ENV=production
WORKDIR /app

# Backend prod deps only.
COPY backend/package.json ./
RUN npm install --omit=dev --no-audit --no-fund

# Compiled backend, built frontend, baked data.
COPY --from=backend-build /app/backend/dist ./dist
COPY --from=frontend-build /app/frontend/dist ./public
COPY data ./data

ENV STATIC_ROOT=/app/public
ENV DATA_ROOT=/app/data
ENV PORT=3000
EXPOSE 3000
CMD ["node", "dist/main.js"]
