# tssbot.web React + Vite + Tailwind v4 web shell for Toothless' TSS Bot. Routes: - `/` landing page - `/teams` TSS team leaderboard - `/teams/:teamname` generated team profile with roster, summary, rating history, and battle results - `/battle-logs` Battle Logs ## Local development ```sh npm install npm run dev ``` The development server runs on . By default, `/api/*` and `/health` requests are proxied to `http://localhost:6000`. Override that with `VITE_API_TARGET`: ```sh VITE_API_TARGET=http://localhost:8080 npm run dev ``` ## Production with PM2 ```sh npm install npm run build pm2 start ecosystem.config.cjs ``` The production server runs on and proxies `/api/*` plus `/health` to `API_UPSTREAM`, which defaults to `http://127.0.0.1:6000`. Override the API target before starting PM2 if needed: ```sh API_UPSTREAM=http://127.0.0.1:8080 pm2 start ecosystem.config.cjs ``` ## GitHub webhook The webhook process listens on port `3011` at `/github`. Configure GitHub to send push events there. Set a webhook secret before starting PM2 if you want signature validation: ```sh GITHUB_WEBHOOK_SECRET=your-secret pm2 start ecosystem.config.cjs ``` On PowerShell, set `$env:GITHUB_WEBHOOK_SECRET = "your-secret"` before starting PM2, or put the value directly in `ecosystem.config.cjs`. The default deploy flow is: ```sh git pull --ff-only npm install npm run build pm2 reload tssbot-web --update-env ``` Only processes listed in `PM2_RESTART_TARGETS` are reloaded. The default is `tssbot-web`, so unrelated PM2 processes are left alone. The webhook exits after 24 hours so PM2 restarts it cleanly.