The SolidStart frontend (Vinxi 0.5.7) does not mount src/routes/api/* as
Nitro handlers in the production build. With only a single path rule
pointing to the frontend pod, every /api/* call fell through to
SolidStart's Not Found handler and returned the HTML shell page — making
the Sign Up button appear to do nothing.
Added an /api prefix rule before / so Traefik matches the longer
prefix and forwards signup/login/KB requests directly to the
nxtgauge-rust-gateway service on port 9100 (same backend that
api.nxtgauge.com already uses).
Verified:
- POST /api/auth/check-email -> 200 application/json
- POST /api/auth/register -> 201 application/json
- GET / -> 200 text/html (frontend shell)
- GET /api/kb/categories -> 200 application/json
- Add .sops.yaml (age) and encrypt every plaintext Secret manifest in apps/
- Commit the Flux GitRepository/Kustomization (previously only applied manually)
with a decryption stanza referencing the sops-age key (created out-of-band,
not committed)
- Rotate JWT_SECRET (previously exposed in plaintext) and set a real
AI_SERVICE_KEY (was an empty placeholder), shared between
nxtgauge-backend-rust and nxtgauge-ai-assistant
- Wire JWT_SECRET into the ai-assistant deployment (was missing entirely,
causing every authenticated request to fail)
- Redact the leaked LiteLLM production master key from README/OPENCODE_CONNECT
docs; move the litellm prod overlay off a plaintext secretGenerator onto an
encrypted patch
- Fix PostgreSQL endpoints (now auto-creating correctly)
- Fix Forgejo DB connection
- Update retention to keep 10 SHA tags (was 2, too aggressive)
- Update all deployments to use available tags
- Add missing base images to registry (alpine, node, rust, python)
- Protect base images from retention deletion
- Backend: 9444056 - crane mirror base images, then build
- Frontend: d26f0bf - crane mirror node:20-alpine, then build
- Admin: e044d4c - crane mirror node:20-alpine, then build
- AI: 6f94539 - crane mirror base images, then build
- All repos now use crane to mirror base images before building
- frontend: use registry.nxtgauge.com/node:20-alpine
- admin: use registry.nxtgauge.com/node:20-alpine
- ai: use registry.nxtgauge.com/rust:1.87-alpine and alpine:3.20
- All images now use internal registry to avoid Docker Hub rate limits
- Update kustomization.yaml tags and admin base deployment image
- Remove ghcr.io references from admin gitops
Images needed in registry.nxtgauge.com:
- node:20-alpine
- rust:1.87-alpine
- alpine:3.20