# ── Stage 1: build Svelte frontend ──────────────────────────────────────────
FROM node:24-alpine AS web-builder

WORKDIR /app/web
COPY web/package*.json ./
RUN npm ci --legacy-peer-deps
COPY web/ ./
RUN npm run build

# ── Stage 2: build Go binary ─────────────────────────────────────────────────
FROM golang:1.26-alpine AS go-builder

WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download

COPY . .
COPY --from=web-builder /app/web/build ./web/build

RUN go build -tags production -o wotra ./cmd/wotra

# ── Stage 3: minimal runtime image ───────────────────────────────────────────
FROM alpine:3.21

RUN adduser -D -u 1000 wotra

WORKDIR /data
USER wotra

COPY --from=go-builder /app/wotra /usr/local/bin/wotra

EXPOSE 8080

ENV PORT=8080 \
    DB_PATH=/data/wotra.db \
    TZ=UTC

ENTRYPOINT ["/usr/local/bin/wotra"]
