# ── Build stage ───────────────────────────────────────────────────────────────
FROM node:20-alpine AS deps

WORKDIR /app/backend
COPY backend/package*.json ./
RUN npm ci --omit=dev

# ── Runtime stage ─────────────────────────────────────────────────────────────
FROM node:20-alpine

RUN apk add --no-cache dumb-init

WORKDIR /app

# Backend code + deps
COPY --from=deps /app/backend/node_modules ./backend/node_modules
COPY backend/ ./backend/

# Frontend static files
COPY frontend/ ./frontend/

# Database schemas (for migrations)
COPY database/ ./database/

# Runtime directories
RUN mkdir -p backend/uploads backend/logs

# Non-root user
RUN addgroup -S nexus && adduser -S nexus -G nexus
RUN chown -R nexus:nexus /app
USER nexus

WORKDIR /app/backend
EXPOSE 3000

ENTRYPOINT ["dumb-init", "--"]
CMD ["node", "server.js"]

HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
  CMD wget -qO- http://localhost:3000/api/health || exit 1
