Single-elimination tournament bracket manager. Create tournaments, seed teams, and record match results through a browser UI.
npm install
npm start # http://localhost:3000
npm testgit clone <your-repo-url> /tmp/bracket-builder
cd /tmp/bracket-buildersudo bash deploy/setup.shThis will:
- Install Node.js 22 (via signed NodeSource apt repo) and nginx
- Copy the app to
/opt/bracket-builder(root-owned, read-only) - Create a dedicated
bracketsystem user - Create
/opt/bracket-builder/data/(writable only bybracket) - Install and start the
bracket-buildersystemd service - Configure nginx as a reverse proxy on port 80
- Open ports 80, 443, and SSH in ufw (if installed)
- Run a health check against
/api/tournaments
systemctl status bracket-builder
curl http://localhost/api/tournamentscd /tmp/bracket-builder
git pull
sudo bash deploy/setup.sh # idempotent — safe to re-runjournalctl -u bracket-builder -fTournament data is stored in /opt/bracket-builder/data/tournaments.json. It is preserved across updates since setup.sh excludes the data/ directory when syncing.