nginx needs a few seconds for its entrypoint scripts; the single-shot
curl raced the container start. Same retry loop as the backend check,
with a log dump on failure.
Authored By: TDvorak <[email protected]>
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Production validation rejects the compose placeholder secrets, so the
backend panicked at config load and the container went unhealthy.
Generate ephemeral BETTER_AUTH_SECRET and BETTER_AUTH_INTERNAL_TOKEN
per run; verified locally that the container reaches healthy.
Authored By: TDvorak <[email protected]>
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Adds a smoke job that boots postgres/redis/backend/frontend/traefik via
docker compose, polls the backend /health endpoint, verifies the
frontend responds, and tears down. Adds a tag-gated images job that
builds and pushes backend/frontend images to GHCR on v* tags.
Authored By: TDvorak <[email protected]>
Generated with [Devin](https://devin.ai)
Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>