A custom entrypoint generates /etc/nginx/.htpasswd at container startup
from AUTH_USER and AUTH_PASSWORD env vars (via openssl). No credentials
are baked into the image. Pass AUTH_USER and AUTH_PASSWORD in docker-compose.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Multi-stage Dockerfile: Node builds static assets, nginx serves them
- nginx proxies /api/* to football-data.org and injects X-Auth-Token
server-side via FOOTBALL_API_KEY env var (key never in browser bundle)
- docker-compose.yml exposes the app on port 3000
- Extract apiFetch() helper: sends key in dev (Vite proxy), skips in prod
- .env.example updated with both dev and production key vars
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>