FROM node:22-alpine AS frontend-builder

WORKDIR /src/frontend

COPY frontend/package.json frontend/package-lock.json ./
RUN npm ci

COPY frontend/ ./
RUN npm run build

FROM golang:1.25.5-alpine AS backend-builder

WORKDIR /src/backend

COPY backend/go.mod backend/go.sum ./
RUN go mod download

COPY backend/ ./

COPY --from=frontend-builder /src/frontend/dist ./dist

RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o timetracker .

FROM alpine:latest

RUN apk --no-cache add ca-certificates tzdata

WORKDIR /app

COPY --from=backend-builder /src/backend/timetracker .

VOLUME ["/data"]

ENV PORT=8080
ENV DB_PATH=/data/timetracking.db

EXPOSE 8080

CMD ["./timetracker"]
