# Single image: builds the web app, then runs the server which serves the API,
# the WebSocket, the uploaded logos, and the built web app.
FROM node:20-alpine AS build
RUN corepack enable
WORKDIR /app

# Install deps (cached on lockfile/manifests)
COPY pnpm-workspace.yaml package.json tsconfig.base.json ./
COPY packages/shared/package.json packages/shared/
COPY apps/server/package.json apps/server/
COPY apps/web/package.json apps/web/
RUN pnpm install

# Build the web app
COPY . .
RUN pnpm --filter @sbt/web build

FROM node:20-alpine AS runtime
RUN corepack enable
WORKDIR /app
ENV NODE_ENV=production \
    WEB_DIR=/app/apps/web/dist \
    UPLOAD_DIR=/data/uploads \
    HOST=0.0.0.0 \
    PORT=3000
COPY --from=build /app ./
EXPOSE 3000
# Server runs TypeScript directly via tsx — no separate build step needed.
CMD ["pnpm", "--filter", "@sbt/server", "start"]
