# Build stage
FROM node:18-alpine AS builder

WORKDIR /app

# Copy package files
COPY package*.json ./

# Install all dependencies (including dev dependencies for building)
RUN npm ci

# Copy source code
COPY . .

# Build the Vite SPA
RUN npm run build

# Production stage
FROM node:18-alpine

WORKDIR /app

# Copy package files
COPY package*.json ./

# Install only production dependencies
RUN npm ci --omit=dev

# Copy server files
COPY server.mjs ./
COPY server/ ./server/

# Copy built frontend
COPY --from=builder /app/dist ./dist

# Create data directory for runtime storage
RUN mkdir -p data && chown -R node:node data

# Switch to non-root user
USER node

# Expose the API port
EXPOSE 3000

# Start the server
CMD ["node", "server.mjs"]
