NEXT_PUBLIC_API_URL was only set at runtime via k8s ConfigMap, but Next.js
inlines NEXT_PUBLIC_* vars at build time. The fallback localhost:8080 URL was
baked into the JS bundle, causing all browser requests to fail. Changed default
to relative /api/v1 which routes correctly through the Ingress. Also updates
Dockerfile ENV syntax and k8s frontend port to 8080.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>