# Step 1: Build Frontend
FROM oven/bun:1 AS frontend-builder
WORKDIR /app/frontend
COPY frontend/package.json frontend/bun.lock ./
RUN bun install --frozen-lockfile
COPY frontend/ ./
RUN bun run build

# Stage 2: Build Backend
FROM golang:1.25-alpine AS backend-builder
WORKDIR /app
RUN apk add --no-cache git
COPY backend/go.mod backend/go.sum ./
RUN go mod download
COPY backend/ ./
COPY --from=frontend-builder /app/frontend/public/ ./web/static/
RUN find ./web/static -type d -empty -delete && go build -ldflags="-w -s" -o aethera ./cmd

# Stage 3: Minimal Runtime
FROM alpine:3.21
RUN apk add --no-cache ca-certificates
WORKDIR /app
COPY --from=backend-builder /app/aethera .
RUN mkdir -p /app/data

EXPOSE 8080
ENV AETHERA_LISTEN=0.0.0.0
ENV AETHERA_PORT=8080
ENV AETHERA_DATA_DIR=/app/data
ENTRYPOINT ["./aethera"]
