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

WORKDIR /app

COPY package*.json ./
RUN npm install

COPY tsconfig.json ./
COPY src ./src
RUN npm run build

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

WORKDIR /app

# Production deps + rebuild better-sqlite3 for Alpine (musl libc)
COPY package*.json ./
RUN npm install --omit=dev && \
    npm rebuild better-sqlite3 && \
    npm cache clean --force

COPY --from=builder /app/dist ./dist
COPY public ./public

RUN mkdir -p /app/data

EXPOSE 3457

CMD ["node", "dist/index.js"]
