# Stage 1: Build the Dashboard SPA (React 19 + Vite + BSuite D2C Neon Electric theme)
FROM node:22-slim AS dashboard-build
WORKDIR /dashboard
COPY dashboard/package.json ./
RUN npm install --no-audit --no-fund
COPY dashboard/ ./
COPY src/desktop_monkey/theme/assets/ ./public/brand/
RUN npm run build

# Stage 2: Mesh relay + dashboard hub image for Railway
FROM python:3.13-slim

WORKDIR /app

COPY pyproject.toml README.md ./
COPY src ./src
COPY --from=dashboard-build /dashboard/dist /app/dashboard/dist

RUN python -m pip install --no-cache-dir --upgrade pip \
 && python -m pip install --no-cache-dir '.[relay]'

# Relay binds 0.0.0.0:$PORT and serves the built dashboard SPA from RELAY_STATIC_DIR
ENV PORT=8787
ENV RELAY_STATIC_DIR=/app/dashboard/dist
EXPOSE 8787

CMD ["python", "-m", "desktop_monkey.relay"]
