FROM node:22-alpine AS tailwind
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable
WORKDIR /app
COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile --production
COPY . /app
RUN pnpm run styles

FROM ghcr.io/tsukinoko-kun/go-common:1-alpine AS builder
WORKDIR /app
COPY . .
COPY --from=tailwind /app/server/public/styles.css /app/server/public/styles.css
RUN protoc --go_out=paths=source_relative:. --go-grpc_out=paths=source_relative:. protos/messages.proto && \
    sqlc generate && \
    templ generate && \
    go build -o /bin/pogo .

FROM alpine:latest AS runner
WORKDIR /
COPY --from=builder /bin/pogo /bin/pogo
ENTRYPOINT ["/bin/pogo", "serve"]