# Stage 1: Build frontend
FROM node:20-alpine AS frontend-build
WORKDIR /app
COPY package.json package-lock.json* ./
RUN npm ci
COPY . .
RUN npm run build

# Stage 2: Build backend
FROM node:20-alpine AS backend-build
WORKDIR /app/server
COPY server/package.json server/package-lock.json* ./
RUN npm ci
COPY server/ .

# Stage 3: Production
FROM node:20-alpine
WORKDIR /app

# Install backend deps
COPY --from=backend-build /app/server/package.json /app/server/package-lock.json* ./server/
RUN cd server && npm ci --omit=dev

# Copy backend source
COPY --from=backend-build /app/server/src ./server/src
COPY --from=backend-build /app/server/tsconfig.json ./server/

# Copy frontend build
COPY --from=frontend-build /app/dist ./dist

# Create data directory for SQLite
RUN mkdir -p /app/server/data

# Install serve for frontend static files
RUN npm i -g serve

ENV PORT=3001
ENV NODE_ENV=production

EXPOSE 3000 3001

# Start both services
CMD sh -c "cd /app/server && npx tsx src/index.ts & serve -s /app/dist -l 3000 & wait"
