# =============================================================================
# Stage 1: Build frontend
# =============================================================================
FROM node:22-alpine AS frontend-builder

WORKDIR /tmp/frontend
RUN npm install -g pnpm

COPY frontend/package.json /tmp/frontend
RUN pnpm install

COPY frontend/src /tmp/frontend/src
COPY frontend/vite.config.js /tmp/frontend
RUN pnpm run build

# =============================================================================
# Stage 2: Build backend
# =============================================================================
FROM mcr.microsoft.com/dotnet/sdk:10.0 AS backend-builder

WORKDIR /tmp/build

COPY src/*.csproj ./src/
RUN dotnet restore src/*.csproj

COPY src/ ./src/
RUN dotnet publish src/*.csproj -c Release -o /app/publish

# =============================================================================
# Stage 3: Final image
# =============================================================================
FROM mcr.microsoft.com/dotnet/aspnet:10.0

RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /usr/app

# Copy backend
COPY --from=backend-builder /app/publish /usr/app/

# Copy frontend build
COPY --from=frontend-builder /tmp/frontend/dist/ /usr/app/config/

ENV FM_WORKER_APP_CONFIG=/usr/app/config/

ENTRYPOINT ["dotnet", "__WORKER_NAME__.dll"]
