FROM python:3.14-slim

COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv

# Node.js 22 LTS
RUN apt-get update \
    && apt-get install -y --no-install-recommends ca-certificates curl tini xvfb \
    && curl -fsSL https://deb.nodesource.com/setup_22.x | bash - \
    && apt-get install -y --no-install-recommends nodejs \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Python deps — cached until pyproject.toml / uv.lock change
COPY pyproject.toml uv.lock ./
RUN uv sync --group api --group mcp --no-dev --frozen

# TypeScript deps — cached until package*.json changes
COPY room_cal/service_api/typescript/package*.json \
     ./room_cal/service_api/typescript/
RUN cd room_cal/service_api/typescript \
    && npm ci \
    && node_modules/.bin/playwright install-deps chromium

# App source
COPY room_cal/ ./room_cal/

COPY docker/uvicorn_log.json /etc/uvicorn_log.json
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["/entrypoint.sh"]
