@nodedaemon/core
Version:
Production-ready Node.js process manager with zero external dependencies
64 lines (60 loc) • 2.18 kB
HTML
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>NodeDaemon Web UI</title>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<div class="container">
<header>
<h1>NodeDaemon</h1>
<div class="header-info">
<span class="status-indicator" id="connectionStatus"></span>
<span id="daemonStatus">Connecting...</span>
</div>
</header>
<div class="controls">
<button class="btn btn-primary" onclick="refreshProcesses()">
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor">
<path d="M1 4v6h6M23 20v-6h-6M20.49 9A9 9 0 1 0 5.64 5.64L1 10m22 4l-4.64 4.36A9 9 0 0 1 3.51 15"/>
</svg>
Refresh
</button>
</div>
<div class="processes-container">
<table class="processes-table">
<thead>
<tr>
<th>Name</th>
<th>Status</th>
<th>PID</th>
<th>CPU</th>
<th>Memory</th>
<th>Uptime</th>
<th>Restarts</th>
<th>Actions</th>
</tr>
</thead>
<tbody id="processesTable">
<tr>
<td colspan="8" class="loading">Loading processes...</td>
</tr>
</tbody>
</table>
</div>
<div class="logs-container">
<div class="logs-header">
<h2>Logs</h2>
<select id="logFilter" onchange="filterLogs()">
<option value="">All Processes</option>
</select>
<button class="btn btn-secondary" onclick="clearLogs()">Clear</button>
</div>
<div class="logs-content" id="logsContent"></div>
</div>
</div>
<script src="app.js"></script>
</body>
</html>