FROM node:24-alpine AS frontend_dependencies
RUN mkdir -p /app
WORKDIR /app
ADD static/app/package.json .
ADD static/app/yarn.lock .
RUN yarn install --frozen-lockfile

FROM frontend_dependencies AS frontend_build
ADD static/app .
RUN yarn build

FROM golang:1.26-alpine AS backend_dependencies
RUN apk add git make
RUN mkdir -p /app
WORKDIR /app
ADD go.mod .
ADD go.sum .
RUN go mod download

FROM backend_dependencies AS backend_build
ADD . .
RUN rm -rf static/app/dist
COPY --from=frontend_build /app/dist /app/static/app/dist
RUN make build

FROM alpine:latest AS final

FROM final
EXPOSE 8000
EXPOSE 9000
COPY --from=backend_build /app/bin/app /app
CMD ["/app"]