Scoreboard 181 Dev Full May 2026
Create an index.html that acts as the "full" dev interface.
<!DOCTYPE html>
<html>
<head>
<title>Scoreboard 181 – Dev Full Interface</title>
<style>
body background: #0a0f1e; color: #00ffcc; font-family: monospace; padding: 2rem;
.scoreboard border-collapse: collapse; width: 100%;
.scoreboard th, .scoreboard td border: 1px solid #2a3f5e; padding: 12px; text-align: left;
.dev-only background-color: #1e2a3a; color: #ffaa66;
h1 span background: #ff6600; color: black; padding: 2px 8px; border-radius: 4px;
</style>
</head>
<body>
<h1>📊 Scoreboard <span>181 DEV FULL</span></h1>
<div id="status">Connecting to WebSocket...</div>
<table class="scoreboard" id="scoreboard-table">
<thead>
<tr><th>ID</th><th>Name</th><th>Score</th><th>Dev Meta (IP/Ping)</th><th>Action</th></tr>
</thead>
<tbody id="scoreboard-body"></tbody>
</table>
<script>
const ws = new WebSocket('ws://localhost:3000');
ws.onopen = () => document.getElementById('status').innerText = 'Connected (Dev Full Mode)';
ws.onmessage = (event) =>
const data = JSON.parse(event.data);
if (data.type === 'full_state')
renderFullScoreboard(data.data);
;
function renderFullScoreboard(data)
const body = document.getElementById('scoreboard-body');
body.innerHTML = '';
data.entries.forEach(entry =>
const row = body.insertRow();
row.insertCell(0).innerText = entry.id;
row.insertCell(1).innerText = entry.name;
row.insertCell(2).innerText = entry.score;
row.insertCell(3).innerHTML = `<span class="dev-only">$entry.dev_meta.ip ($entry.dev_meta.pingms)</span>`;
const actionCell = row.insertCell(4);
const btn = document.createElement('button');
btn.innerText = '+10 (Dev)';
btn.onclick = () =>
ws.send(JSON.stringify( type: 'update_score', id: entry.id, delta: 10, flag: '181' ));
;
actionCell.appendChild(btn);
);
</script>
</body>
</html>
To configure the Scoreboard 181 Dev Full instance: scoreboard 181 dev full
// Example Initialization Code (C#)
using Scoreboard.Core;
void Start()
// Initialize the 181 build
ScoreboardManager.Init(new Config
RefreshRate = 60,
DataSource = "ws://stadium-server:8080/feed"
);
// Bind events
ScoreboardManager.OnScoreUpdate += HandleScoreChange;
void HandleScoreChange(ScoreData data)
Debug.Log($"Score Update: data.HomeTeam - data.HomeScore");