Files
fullhouse/nginx.conf
Fredrik Johansson d99c44cb9d
All checks were successful
Docker / build-and-push (push) Successful in 1m18s
Initial build: fullhouse, live music bingo from a real Spotify playlist
Based on bingo-bango by f8al (MIT) — same core card-generation idea
("both facets": a square is either an exact song title or an artist,
and an artist square lights up on any of their tracks), reworked with
a real host/guest split, live multiplayer sessions, and cover-art
squares. f8al credited in the footer, README, and PROPOSAL.md.

Three ways to play: host a live session (server-side Spotify
connection, join code + QR, caller screen, auto-call from real
playback), join someone else's session (no login needed), or solo
(guest PKCE login or a pasted public playlist URL, one-off card).

Genuinely verified against a real Spotify account throughout, not
just built and assumed working — including two real bugs found and
fixed along the way (Spotify's playlist-tracks endpoint quietly
renamed to /items with a reshaped response; reading playlist tracks
needs real user auth even for public playlists, so the "no guest
login" public-playlist path routes through the host's connection
instead of a dead-end app-only token). Both Docker images built and
run together on a real network with the nginx proxy verified working
end-to-end, and auto-call confirmed detecting an actual track playing
live through Spotify Connect within one poll tick.
2026-07-18 22:05:37 +02:00

30 lines
1010 B
Nginx Configuration File

server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
# Same-origin proxy to the api container — deliberately, not an
# absolute cross-origin URL. Pointing the client straight at the api
# container's own origin broke CORS during local dev (no CORS headers
# on the server, and adding them would be more moving parts than just
# not needing them).
location /api/ {
proxy_pass http://api:3010;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Hash-based client routing (#/host, #/play/CODE, ...) — the fragment
# never reaches the server, so plain static serving is enough; no SPA
# history-API rewrite rule needed for any route, including the guest
# OAuth callback (?code=... lands on the root path itself).
location / {
try_files $uri $uri/ /index.html;
}
}