FROM node:20-alpine AS frontend
WORKDIR /app/frontend
COPY frontend/package.json frontend/package-lock.json* ./
RUN npm install
COPY frontend/ .
RUN npm run build

FROM golang:1.23-alpine AS backend
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o /markdownhub ./cmd/server
RUN go build -o /mdsync ./cmd/mdsync

FROM alpine:3.20
RUN apk add --no-cache ca-certificates
WORKDIR /app
COPY --from=backend /markdownhub /app/markdownhub
COPY --from=backend /mdsync /app/mdsync
COPY --from=frontend /app/frontend/dist /app/frontend/dist

ENV MH_DATA_DIR=/app/data
ENV MH_PORT=8080
EXPOSE 8080
VOLUME ["/app/data"]

ENTRYPOINT ["/app/markdownhub"]
