FROM node:24-alpine AS frontend-builder
WORKDIR /app
COPY frontend/package.json frontend/package-lock.json ./frontend/
RUN cd frontend && npm ci
COPY frontend ./frontend
COPY tokens.css ./tokens.css
RUN cd frontend && npm run build

FROM python:3.12-slim AS runtime
RUN apt-get update \
    && apt-get install --yes --no-install-recommends libgomp1 \
    && rm -rf /var/lib/apt/lists/*
COPY --from=ghcr.io/astral-sh/uv:0.11.29 /uv /uvx /bin/
WORKDIR /app
COPY pyproject.toml uv.lock README.md ./
RUN uv sync --frozen --no-dev
COPY config.yaml ./
COPY resources ./resources
COPY src ./src
COPY models/model-source.json ./models/model-source.json
COPY --from=frontend-builder /app/frontend/dist ./frontend/dist
ENV PATH="/app/.venv/bin:$PATH"
EXPOSE 8011
CMD ["uvicorn", "prooflens.main:app", "--app-dir", "src", "--host", "0.0.0.0", "--port", "8011"]
