# Multi-stage Dockerfile for RedactFlow PDF Sanitizer
# Optimized for Railway deployment

# Stage 1: Build React frontend
FROM node:18-alpine AS frontend-builder

WORKDIR /app/frontend

# Copy package files
COPY frontend/package*.json ./

# Install dependencies (including dev dependencies for build)
RUN npm ci

# Copy frontend source code
COPY frontend/ ./

# Inject React build-time env vars (Railway passes these as build args)
ARG REACT_APP_SUPABASE_URL
ARG REACT_APP_SUPABASE_ANON_KEY
ARG REACT_APP_STRIPE_PUBLISHABLE_KEY
ENV REACT_APP_SUPABASE_URL=$REACT_APP_SUPABASE_URL
ENV REACT_APP_SUPABASE_ANON_KEY=$REACT_APP_SUPABASE_ANON_KEY
ENV REACT_APP_STRIPE_PUBLISHABLE_KEY=$REACT_APP_STRIPE_PUBLISHABLE_KEY

# Build the React app
RUN npm run build

# Debug: List the build output
RUN ls -la /app/frontend/build/
RUN ls -la /app/frontend/build/static/ || echo "No static directory found"

# Stage 2: Python backend with frontend static files
FROM python:3.11-slim

# Set working directory
WORKDIR /app

# Install minimal system dependencies for PyMuPDF
RUN apt-get update && apt-get install -y \
    curl \
    libglib2.0-0 \
    libgomp1 \
    libgcc-s1 \
    libffi-dev \
    && rm -rf /var/lib/apt/lists/*

# Install Python dependencies from pyproject.toml
COPY pyproject.toml README.md ./
RUN pip install --no-cache-dir .

# Copy backend source code
COPY backend/ ./backend/
COPY nodes/ ./nodes/

# Copy built frontend from previous stage
COPY --from=frontend-builder /app/frontend/build ./frontend/build

# Debug: List what was copied
RUN echo "🔧 DOCKER DEBUG: Checking frontend build after copy..."
RUN ls -la ./frontend/ || echo "No frontend directory found"
RUN ls -la ./frontend/build/ || echo "No frontend/build directory found"
RUN ls -la ./frontend/build/static/ || echo "No frontend/build/static directory found"

# Create necessary directories
RUN mkdir -p output/original output/preview output/redacted static

# Set environment variables
ENV PYTHONPATH=/app
ENV PYTHONUNBUFFERED=1

# Expose port (Railway will override this with PORT env var)
EXPOSE 8000

# Health check
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \
    CMD curl -f http://localhost:8000/ || exit 1

# Start command
CMD ["python", "backend/main.py"]
