# syntax=docker/dockerfile:1.7

FROM oven/bun:1.3 AS deps
WORKDIR /app

# Workspace manifests first for better layer caching.
COPY package.json bun.lock ./
COPY apps/frontend/package.json apps/frontend/package.json
COPY packages/api-contract/package.json packages/api-contract/package.json

RUN bun install --frozen-lockfile

FROM deps AS build
WORKDIR /app

COPY apps/frontend apps/frontend
COPY packages/api-contract packages/api-contract

# Build-time variables for Vite.
ARG VITE_API_BASE_URL=http://localhost:3000
ARG VITE_SUPABASE_URL=
ARG VITE_SUPABASE_ANON_KEY=
ENV VITE_API_BASE_URL=${VITE_API_BASE_URL}
ENV VITE_SUPABASE_URL=${VITE_SUPABASE_URL}
ENV VITE_SUPABASE_ANON_KEY=${VITE_SUPABASE_ANON_KEY}

RUN bun --filter frontend build

FROM nginx:1.27-alpine AS runner
WORKDIR /usr/share/nginx/html

COPY apps/frontend/nginx.conf /etc/nginx/conf.d/default.conf
COPY --from=build /app/apps/frontend/dist ./

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]
