FROM node:20-alpine

WORKDIR /app

# Install build tools needed for better-sqlite3 native bindings
RUN apk add --no-cache python3 make g++

# Copy package manifests
COPY package*.json ./
COPY client/package*.json ./client/

# Install all dependencies (dev deps needed for prisma CLI + tsc build)
RUN npm install
RUN cd client && npm install

# Copy source
COPY . .

# Generate Prisma client for target platform (must happen before tsc)
RUN npx prisma generate

# Build server (tsc) + client (vite)
RUN npm run build

# Ensure data directory exists for SQLite bind mount
RUN mkdir -p /app/data

EXPOSE 3001

# Apply pending migrations then start
CMD ["sh", "-c", "npx prisma migrate deploy && node dist/server/index.js"]
