FROM node:24-alpine AS frontend-builder
WORKDIR /app/frontend
COPY frontend/package.json frontend/pnpm-lock.yaml* ./
RUN npm install -g pnpm && pnpm install --frozen-lockfile
COPY frontend/ ./
RUN pnpm build

FROM node:24-alpine AS backend-builder
WORKDIR /app/backend
COPY backend/package.json backend/pnpm-lock.yaml* ./
RUN npm install -g pnpm && pnpm install --frozen-lockfile
COPY backend/ ./
COPY prisma/ ../prisma/
RUN pnpm run generate && pnpm run build

FROM node:24-alpine AS runner
WORKDIR /app
RUN apk add --no-cache openssl

COPY --from=backend-builder /app/backend/dist ./backend/dist
COPY --from=backend-builder /app/backend/node_modules ./backend/node_modules
COPY --from=backend-builder /app/backend/package.json ./backend/package.json
COPY --from=frontend-builder /app/frontend/dist ./frontend/dist
COPY prisma/ ./prisma/

WORKDIR /app/backend

EXPOSE 5000

CMD sh -c "npx prisma migrate deploy --schema=../prisma/schema.prisma && node dist/index.js"
