-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocs.html
More file actions
295 lines (254 loc) · 8.21 KB
/
Copy pathdocs.html
File metadata and controls
295 lines (254 loc) · 8.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Documentation | Kernel Pulse</title>
<link rel="stylesheet" href="style.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
body {
height: auto;
overflow-y: auto;
display: block;
}
.docs-container {
max-width: 960px;
margin: 0 auto;
padding: 3rem 1.5rem;
}
.back-link {
display: inline-flex;
align-items: center;
gap: 8px;
color: var(--primary);
text-decoration: none;
margin-bottom: 2rem;
font-family: var(--font-mono);
font-weight: bold;
}
.doc-section {
background: var(--panel);
border: 1px solid var(--border);
border-radius: 8px;
padding: 2rem;
margin-bottom: 2rem;
}
h1 {
font-size: 2rem;
font-weight: 300;
margin-bottom: 0.5rem;
}
h2 {
color: var(--primary);
font-family: var(--font-mono);
margin-bottom: 1rem;
}
h3 {
margin-top: 1.5rem;
margin-bottom: 0.5rem;
}
p, li {
color: var(--text-muted);
line-height: 1.6;
}
ul {
margin-left: 1.5rem;
}
code {
background: #000;
padding: 2px 6px;
border-radius: 4px;
font-family: var(--font-mono);
color: var(--warning);
font-size: 0.85rem;
}
pre {
background: #000;
border: 1px solid var(--border);
border-radius: 6px;
padding: 1.25rem;
overflow-x: auto;
margin-top: 1rem;
margin-bottom: 1rem;
}
footer {
text-align: center;
margin-top: 3rem;
font-size: 0.8rem;
color: var(--text-muted);
}
</style>
</head>
<body>
<div class="docs-container">
<a href="index.html" class="back-link">
<i class="fas fa-arrow-left"></i> Back to Dashboard
</a>
<h1><i class="fas fa-book"></i> Kernel Pulse Documentation</h1>
<p>Open-source, serverless status monitoring for developers and small teams.</p>
<!-- WHAT IS -->
<div class="doc-section">
<h2>What is Kernel Pulse?</h2>
<p>
Kernel Pulse is a lightweight <strong>status page + connectivity monitor</strong>.
It allows you to check whether your websites, APIs, and services are reachable in real time.
</p>
<p>
The UI runs entirely in the browser, while actual network checks are performed by
a secure <strong>serverless function</strong> deployed on Vercel.
</p>
<p>
There is no database, no background jobs, and no vendor lock-in.
</p>
</div>
<!-- HOW IT WORKS -->
<div class="doc-section">
<h2>How Kernel Pulse Works</h2>
<ul>
<li>The dashboard loads services from <code>config.json</code></li>
<li>When a scan is triggered, the browser calls a serverless API</li>
<li>The serverless API checks if the target responds</li>
<li>Status and response time are returned and displayed</li>
</ul>
<p>
This architecture avoids browser security limitations and provides accurate results.
</p>
</div>
<!-- DASHBOARD FEATURES -->
<div class="doc-section">
<h2>Dashboard Features</h2>
<h3>Scan Network</h3>
<p>
Manually checks all services defined in <code>config.json</code> once.
This updates individual service cards and the global system status.
</p>
<h3>Auto-Refresh (30s)</h3>
<p>
Automatically runs a network scan every 30 seconds
<strong>while the page remains open</strong>.
</p>
<p>
This is useful for live monitoring screens but does not run in the background
after the tab is closed.
</p>
<h3>Quick Probe</h3>
<p>
Allows you to instantly test any URL without adding it to the configuration file.
</p>
<h3>Probe History</h3>
<p>
Recently checked URLs are stored locally in your browser using
<strong>localStorage</strong>.
</p>
<ul>
<li>History is private per browser</li>
<li>No data is sent to the server</li>
<li>History persists after refresh</li>
</ul>
</div>
<!-- CONFIG -->
<div class="doc-section">
<h2>Configuration (config.json)</h2>
<p>
Kernel Pulse is fully configured using a single file: <code>config.json</code>.
</p>
<p>Example configuration:</p>
<pre><code>{
"brand": {
"name": "Jaiho Pulse",
"parent": "Jaiho Kernel",
"url": "https://jaiho-digital.onrender.com",
"logo_icon": "fas fa-heart-pulse"
},
"categories": [
{
"name": "Utilities & Privacy",
"services": [
{
"id": "j-ip",
"name": "Jaiho IP",
"url": "https://jaiho-ip.vercel.app",
"desc": "IP Detection API"
}
]
}
]
}</code></pre>
<ul>
<li><code>id</code> must be unique</li>
<li><code>url</code> must be publicly reachable</li>
<li>No rebuild required — just refresh</li>
</ul>
</div>
<!-- API -->
<div class="doc-section">
<h2>Using Kernel Pulse as an API</h2>
<p>
Kernel Pulse can also be used as a simple public JSON API for developers.
</p>
<p><strong>Endpoint:</strong></p>
<code>GET https://kernel-pulse.vercel.app/api/json</code>
<p><strong>Example Response:</strong></p>
<pre><code>{
"status": "online",
"responseTime": 213,
"timestamp": "2025-01-20T12:30:00Z"
}</code></pre>
<h3>JavaScript Example</h3>
<pre><code>fetch('https://kernel-pulse.vercel.app/api/json')
.then(response => response.json())
.then(data => {
console.log('status:', data.status);
console.log('ms:', data.responseTime);
console.log('time:', data.timestamp);
})
.catch(error => console.error('Error:', error));</code></pre>
<h3>Python Example</h3>
<pre><code>
import requests
response = requests.get('https://kernel-pulse.vercel.app/api/json')
data = response.json()
print("status:", data["status"])
print("ms:", data["responseTime"])
print("time:", data["timestamp"])</code></pre>
<p>
This API is read-only and intended for lightweight integrations,
dashboards, and monitoring scripts.
</p>
</div>
<div class="doc-section">
<h2>API Rate Limits</h2>
<p>
The Kernel Pulse API is rate-limited to ensure fair usage and platform stability.
</p>
<ul>
<li>Maximum <strong>60 requests per minute per IP</strong></li>
<li>Applies to all <code>/api/json</code> requests</li>
<li>Exceeding the limit returns HTTP <code>429</code></li>
</ul>
<p>
This API is intended for lightweight monitoring, dashboards, and scripts.
Please avoid high-frequency polling.
</p>
</div>
<!-- LIMITATIONS -->
<div class="doc-section">
<h2>Limitations</h2>
<ul>
<li>No background monitoring when the page is closed</li>
<li>No alerts or notifications</li>
<li>No historical uptime storage</li>
<li>No shared history between users</li>
</ul>
<p>
These limitations are intentional to keep Kernel Pulse simple,
transparent, and free.
</p>
</div>
<footer>
<p>© 2025 Jaiho Kernel — Open Source Software</p>
</footer>
</div>
</body>
</html>