# Flywheel marketing — Nitro node-server (not Vercel / Vite preview)
FROM node:22-bookworm-slim AS build
WORKDIR /app
ENV NODE_OPTIONS=--max-old-space-size=4096
ARG VITE_AUTH_ENABLED=false
ENV VITE_AUTH_ENABLED=${VITE_AUTH_ENABLED}
ARG VITE_PUBLIC_HOSTNAME=flywheel.tuce.app
ENV VITE_PUBLIC_HOSTNAME=${VITE_PUBLIC_HOSTNAME}
COPY package.json package-lock.json ./
RUN npm install --include=dev --no-audit --no-fund
COPY . .
ENV NODE_ENV=production
RUN npx vite build && test -f .output/server/index.mjs

FROM node:22-bookworm-slim AS runner
WORKDIR /app
ENV NODE_ENV=production
ENV HOST=0.0.0.0
ENV PORT=8080
ENV NITRO_HOST=0.0.0.0
ENV NITRO_PORT=8080
ENV NODE_OPTIONS=--max-old-space-size=1536
ENV VITE_PUBLIC_HOSTNAME=flywheel.tuce.app
ENV VITE_AUTH_ENABLED=false
COPY --from=build /app/.output ./.output
COPY --from=build /app/node_modules/@electric-sql/pglite/dist/pglite.data ./.output/server/_libs/pglite.data
COPY --from=build /app/node_modules/@electric-sql/pglite/dist/pglite.wasm ./.output/server/_libs/pglite.wasm
COPY --from=build /app/node_modules/@electric-sql/pglite/dist/initdb.wasm ./.output/server/_libs/initdb.wasm
EXPOSE 8080
HEALTHCHECK --interval=30s --timeout=5s --start-period=90s --retries=5 \
  CMD node -e "fetch('http://127.0.0.1:8080/api/version').then(r=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))"
CMD ["node", ".output/server/index.mjs"]
