Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
duinocoin/
node_modules/
config/
dashboard/rewards*.json
dashboard/workers_*.json
dashboard/history*.json
3 changes: 3 additions & 0 deletions config/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@

"host": "0.0.0.0",
"port": 6000,
"dashboard_port": 6030,
"historyMaxPoints": 480,
"historyMaxAgeHours": 24,

"serverIP": "server.duinocoin.com",
"serverPort": 2810,
Expand Down
1 change: 0 additions & 1 deletion dashboard/rewards.json

This file was deleted.

255 changes: 159 additions & 96 deletions dashboard/static/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,109 +4,172 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://jenil.github.io/bulmaswatch/superhero/bulmaswatch.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.1/js/all.min.js" integrity="sha256-MAgcygDRahs+F/Nk5Vz387whB4kSK9NXlDN3w58LLq0=" crossorigin="anonymous"></script>
<title>Pool Dashboard</title>
<script>
document.documentElement.dataset.theme =
localStorage.getItem("theme") || "dark";
</script>
<link rel="stylesheet" href="/styles.css">
<script src="/vendor/chart.umd.min.js" defer></script>
<script src="/script.js" defer></script>
<title>Pulse Pool Stats</title>
<link rel="icon" href="logo.png" type="image/png" />
<link rel="shortcut icon" href="logo.png" type="image/png" />
<link rel="stylesheet" href="styles.css" />
</head>

<body>
<br>
<section class="container">
<div class="columns">
<div class="column">
<div class="box has-text-centered">
<p class="subtitle is-size-6">Welcome to</p>
<p class="title is-size-2 gradient-logo">
<img src="logo.png" class="icon is-normal">
Pulse Pool
</p>
<p class="subtitle">
a
<a href="https://duinocoin.com" class="has-text-warning">
<b>Duino-Coin</b>
</a>
mining node 👋
</p>
</div>
<div class="box">
<p class="title">
<i class="fa fa-fw fa-info-circle"></i>
Node statistics
</p>
<div class="columns has-text-centered">
<div class="column">
<p class="subtitle">
<i class="fa fa-fw fa-wifi"></i>
Connections:
<b id="connections" class="has-text-warning">
0
</b>
</p>
</div>
<div class="column">
<p class="subtitle">
<i class="fa fa-fw fa-microchip"></i>
CPU usage:
<b id="cpu" class="has-text-success">
0%
</b>
</p>
</div>
<div class="column">
<p class="subtitle">
<i class="fa fa-fw fa-memory"></i>
RAM usage:
<b id="ram" class="has-text-success">
0%
</b>
</p>
</div>
<div class="column">
<p class="subtitle">
<i class="fa fa-fw fa-users"></i>
Workers:
<a href="/workers" class="has-text-info">
<b>workers.json</b>
</a>
</p>
</div>
</div>
<p class="subtitle has-text-centered">
~ More data will be added here when Bila adds more api stuff ~
</p>
</div>
<div class="box">
<p class="title">
<i class="fa fa-fw fa-book"></i>
History
</p>
<p class="subtitle">
Pulse pool (also named Kolka pool) is the first <b>Duino-Coin</b> mining node created by <b>Bilaboz</b> from the Duino team.<br>
It was launched at <b>6/07/2021</b> and helps in off-loading the master server from PC and ESP miners.
</p>
</div>
<header class="topbar">
<div class="brand">
<span class="status-dot" id="status-dot" title="Pool status"></span>
<div>
<h1 id="pool-name">Duino-Coin Pool</h1>
<p class="motd" id="pool-motd">a Duino-Coin mining node</p>
</div>
</div>
</section>
<br><br>
<br><br>
<br><br>
<br><br>
<br><br>
<br><br>
<br><br>
<footer>
<div class="content has-text-centered">
<p>
Designed by <b>revox</b> from Duino team 2021<br>
Made with <a href="https://bulma.io"><b>Bulma</b></a>
</p>
<div class="topbar-meta">
<span class="pill" id="pool-port" title="Mining port">port —</span>
<span class="pill" id="uptime" title="Pool uptime">up —</span>
<button class="theme-toggle" id="theme-toggle" aria-label="Toggle light/dark theme">
<svg class="icon-moon" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>
<svg class="icon-sun" viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg>
</button>
</div>
</header>

<main>
<p class="error-line" id="stats-error" hidden></p>

<section class="tiles">
<div class="tile tile-hero">
<p class="tile-label">Pool hashrate</p>
<p class="tile-value hero-value" id="hashrate">—</p>
<p class="tile-sub" id="hashrate-sub">&nbsp;</p>
</div>
<div class="tile">
<p class="tile-label">Connections</p>
<p class="tile-value" id="connections">—</p>
</div>
<div class="tile">
<p class="tile-label">Workers</p>
<p class="tile-value" id="workers">—</p>
</div>
<div class="tile">
<p class="tile-label">Users</p>
<p class="tile-value" id="users">—</p>
</div>
<div class="tile">
<p class="tile-label">Accept rate</p>
<p class="tile-value" id="accept-rate">—</p>
<p class="tile-sub" id="shares-sub">&nbsp;</p>
</div>
<div class="tile">
<p class="tile-label">CPU</p>
<p class="tile-value" id="cpu">—</p>
</div>
<div class="tile">
<p class="tile-label">RAM</p>
<p class="tile-value" id="ram">—</p>
</div>
</section>

<section class="filter-row">
<div class="range-buttons" role="group" aria-label="History range">
<button class="range-btn" data-range="1800000">30 min</button>
<button class="range-btn" data-range="3600000">1 hour</button>
<button class="range-btn is-selected" data-range="">All</button>
</div>
<p class="filter-meta">
<span id="history-range">—</span>
· <span id="sync-info">—</span>
· <span id="last-updated">loading…</span>
</p>
</section>

<section class="charts">
<div class="card">
<h2 class="card-title">Hashrate</h2>
<div class="chart-container"><canvas id="hashrate-chart"></canvas></div>
</div>
<div class="card">
<h2 class="card-title">Connections &amp; workers</h2>
<div class="chart-container"><canvas id="conn-chart"></canvas></div>
</div>
<div class="card">
<h2 class="card-title">CPU &amp; RAM</h2>
<div class="chart-container"><canvas id="system-chart"></canvas></div>
</div>
</section>

<section class="card">
<div class="card-head">
<h2 class="card-title">Top miners</h2>
<p class="card-meta" id="rewards-summary">—</p>
</div>
<div class="table-scroll">
<table>
<thead>
<tr>
<th class="num">#</th>
<th>User</th>
<th class="num">Rigs</th>
<th class="num">Hashrate</th>
<th class="num">Accept</th>
<th class="num">Pending DUCO</th>
</tr>
</thead>
<tbody id="leaderboard-table"></tbody>
</table>
</div>
<p class="card-hint">Click a user to see their workers below.</p>
</section>

<section class="card" id="workers-card">
<div class="card-head">
<h2 class="card-title">Workers</h2>
<p class="card-meta" id="workers-count">—</p>
</div>
<div class="workers-toolbar">
<div class="search-wrap">
<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="11" cy="11" r="8"/><path d="m21 21-4.35-4.35"/></svg>
<input type="search" id="worker-search" placeholder="Search user, miner, or rig…">
</div>
<select id="worker-sort" aria-label="Sort workers">
<option value="hashrate:desc">Hashrate (high to low)</option>
<option value="hashrate:asc">Hashrate (low to high)</option>
<option value="username:asc">Username (A–Z)</option>
<option value="username:desc">Username (Z–A)</option>
<option value="accepted:desc">Most accepted</option>
<option value="rejected:desc">Most rejected</option>
</select>
</div>
<p class="error-line" id="workers-error" hidden></p>
<div class="table-scroll table-scroll-tall">
<table>
<thead>
<tr>
<th>User</th>
<th class="num">Hashrate</th>
<th>Miner</th>
<th>Rig</th>
<th class="num">Diff</th>
<th class="num">Ping</th>
<th class="num">OK</th>
<th class="num">Bad</th>
</tr>
</thead>
<tbody id="workers-table"></tbody>
</table>
</div>
</section>
</main>

<footer>
<p>
Duino-Coin pool dashboard ·
<a href="https://duinocoin.com">duinocoin.com</a> ·
<a href="/workers">workers.json</a> ·
<a href="/rewards">rewards.json</a> ·
<a href="/history">history.json</a> ·
<a href="/ping">ping</a>
</p>
</footer>
</body>

</html>
</html>
Loading