FROM node:20-alpine AS api-build
WORKDIR /app/api
COPY rollerlogic-api/package.json rollerlogic-api/package-lock.json ./
RUN npm ci
COPY rollerlogic-api/src ./src
COPY rollerlogic-api/tsconfig.json ./
RUN npm run build
COPY rollerlogic-api/private ./private

FROM node:20-alpine AS web-build
WORKDIR /app/web
COPY rollerlogic-mobile/package.json rollerlogic-mobile/package-lock.json ./
RUN npm ci
COPY rollerlogic-mobile/ ./
ARG VITE_API_URL
ENV VITE_API_URL=${VITE_API_URL}
ARG VITE_STRIPE_ENABLED=true
ENV VITE_STRIPE_ENABLED=${VITE_STRIPE_ENABLED}
RUN npm run build

FROM node:20-alpine AS runner
WORKDIR /app
ENV NODE_ENV=production
COPY rollerlogic-api/package.json rollerlogic-api/package-lock.json ./
RUN npm ci --omit=dev && npm cache clean --force
COPY --from=api-build /app/api/dist ./dist
COPY --from=api-build /app/api/private ./private
COPY --from=web-build /app/web/dist ./public
USER node
EXPOSE 3000
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
  CMD wget -q -O /dev/null http://127.0.0.1:3000/api/health || exit 1
CMD ["node", "dist/index.js"]
