lobsterboard 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -87
- package/LICENSE +38 -21
- package/README.md +187 -140
- package/app.html +201 -62
- package/css/builder.css +144 -2
- package/dist/lobsterboard.css +1 -1
- package/dist/lobsterboard.esm.js +64 -1
- package/dist/lobsterboard.esm.js.map +1 -1
- package/dist/lobsterboard.esm.min.js +2 -2
- package/dist/lobsterboard.esm.min.js.map +1 -1
- package/dist/lobsterboard.umd.js +64 -1
- package/dist/lobsterboard.umd.js.map +1 -1
- package/dist/lobsterboard.umd.min.js +2 -2
- package/dist/lobsterboard.umd.min.js.map +1 -1
- package/js/builder.js +269 -16
- package/js/templates.js +284 -0
- package/js/widgets.js +477 -125
- package/package.json +7 -3
- package/server.cjs +593 -3
- package/src/widgets.js +63 -0
- package/templates/README.md +69 -0
- package/templates/full-screen-focus-on-openclaw-systems/config.json +335 -0
- package/templates/full-screen-focus-on-openclaw-systems/meta.json +136 -0
- package/templates/full-screen-focus-on-openclaw-systems/preview.png +0 -0
- package/templates/minimal-layout-for-10-inch-screen/config.json +211 -0
- package/templates/minimal-layout-for-10-inch-screen/meta.json +79 -0
- package/templates/minimal-layout-for-10-inch-screen/preview.png +0 -0
- package/templates/templates.json +217 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,95 +1,34 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Changelog
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## [Unreleased]
|
|
8
|
-
|
|
9
|
-
### Fixed
|
|
10
|
-
- Text-header widget "Show Border" checkbox now works — toggling it off removes the card background, border, and box-shadow from the `.placed-widget` container
|
|
11
|
-
- Fix text-header, horizontal-line, and vertical-line widgets disappearing after save/reload — unknown widget types (e.g. removed `topbar`) crashed `renderWidget`, stopping all subsequent widgets from loading
|
|
12
|
-
- Add guard in `renderWidget` to skip unknown widget types gracefully
|
|
13
|
-
- Wrap each widget render in try/catch so one bad widget can't prevent others from loading
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## [0.1.0] - 2026-02-05
|
|
18
|
-
|
|
19
|
-
### 🎉 Initial Release
|
|
20
|
-
|
|
21
|
-
The first public version of LobsterBoard - a visual dashboard builder for the OpenClaw community.
|
|
3
|
+
## [0.2.0] - 2025-02-15
|
|
22
4
|
|
|
23
5
|
### Added
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
39
|
-
#### Widgets (40+)
|
|
40
|
-
- **AI/LLM:** Claude Usage, GPT Usage, Gemini Usage, AI Usage (All), Cost Tracker, API Status, Active Sessions, Token Gauge
|
|
41
|
-
- **Basics:** Local Weather, World Weather, Clock, World Clock, Countdown, Stat Card, Battery Status
|
|
42
|
-
- **System:** CPU/Memory, Disk Usage, Network Speed, Docker, Uptime Monitor
|
|
43
|
-
- **OpenClaw:** Auth Status, Sleep Ring, Release, Activity List, Cron Jobs, System Log
|
|
44
|
-
- **Productivity:** Todo List, Calendar, Email Count, Pomodoro, Notes, GitHub Stats
|
|
45
|
-
- **Finance:** Stock Ticker, Crypto Price
|
|
46
|
-
- **Smart Home:** Indoor Climate, Camera Feed, Power Usage
|
|
47
|
-
- **Entertainment:** Now Playing, Quote of Day
|
|
48
|
-
- **Content:** Quick Links, RSS Feed, Image Embed, Iframe Embed
|
|
49
|
-
- **Bars:** Top Nav Bar, News Ticker, RSS Ticker
|
|
50
|
-
|
|
51
|
-
#### Branding
|
|
52
|
-
- LobsterBoard name and mascot 🦞
|
|
53
|
-
- Logo wordmark for header
|
|
54
|
-
- Mascot illustration for sidebar
|
|
55
|
-
- Favicon and Apple touch icon
|
|
56
|
-
|
|
57
|
-
#### Design
|
|
58
|
-
- Dark theme matching OpenClaw aesthetic
|
|
59
|
-
- Consistent `dash-card` styling across all widgets
|
|
60
|
-
- Widget headers with icons
|
|
61
|
-
- Sample data display (no loading spinners in builder)
|
|
62
|
-
|
|
63
|
-
### Technical Notes
|
|
64
|
-
- Weather widgets use wttr.in (free, no API key required)
|
|
65
|
-
- API keys stored as placeholders for users to fill in post-export
|
|
66
|
-
- AI usage widgets require backend proxy due to CORS
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## [0.1.1] - 2026-02-06
|
|
6
|
+
- **Template Gallery** — export, import, and share dashboard layouts with auto-screenshot previews
|
|
7
|
+
- `js/templates.js` — new template gallery UI and export system
|
|
8
|
+
- Templates API: list, get, preview, import (merge/replace), export, delete
|
|
9
|
+
- `templates/` directory with bundled starter templates
|
|
10
|
+
- Template modal with search, preview lightbox, and import options
|
|
11
|
+
- **Notes widget** — persistent rich-text notes with auto-save via `/api/notes`
|
|
12
|
+
- **Browse button** for directory selection in image widgets (Image, Random Image, Latest Image)
|
|
13
|
+
- **GitHub Stats widget rework** — profile contributions, stars, and activity with property bindings
|
|
14
|
+
- **LobsterBoard Release widget** — version update checker via `/api/lb-release`
|
|
15
|
+
- **SSE streaming** for system stats (`/api/stats/stream`)
|
|
16
|
+
- **Browse directories API** (`/api/browse-dirs`) for server-side directory picker
|
|
17
|
+
- Sidebar reorder, verified checkmarks, delete button, tooltips in editor
|
|
18
|
+
- html2canvas-based dashboard screenshot export
|
|
19
|
+
- Scrollable canvas mode
|
|
71
20
|
|
|
72
21
|
### Changed
|
|
73
|
-
-
|
|
74
|
-
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
- Mascot positioning with `margin-top: auto` in flexbox
|
|
78
|
-
|
|
79
|
-
---
|
|
80
|
-
|
|
81
|
-
## Upcoming
|
|
82
|
-
|
|
83
|
-
### Planned Features
|
|
84
|
-
- GitHub Pages deployment
|
|
85
|
-
- Import/export dashboard layouts (JSON)
|
|
86
|
-
- Widget templates and presets
|
|
87
|
-
- More customization options
|
|
88
|
-
- Community widget contributions
|
|
22
|
+
- Stock Ticker widget — fixed `hasApiKey` check
|
|
23
|
+
- Builder — contenteditable keyboard fix, null-checks throughout
|
|
24
|
+
- License changed from MIT to BSL-1.1
|
|
25
|
+
- Widget count: 47 → 50
|
|
89
26
|
|
|
90
|
-
|
|
27
|
+
### Removed
|
|
28
|
+
- GPT Usage widget (standalone) — use AI Cost Tracker or Claude Usage instead
|
|
91
29
|
|
|
92
|
-
##
|
|
30
|
+
## [0.1.6] - 2025-02-14
|
|
93
31
|
|
|
94
|
-
-
|
|
95
|
-
-
|
|
32
|
+
- Initial public npm release
|
|
33
|
+
- 47 widgets, drag-and-drop editor, custom pages system
|
|
34
|
+
- SSRF protection for proxy endpoints
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
# Business Source License 1.1
|
|
2
|
+
|
|
3
|
+
**Licensor:** Rich Curry (Curbob)
|
|
4
|
+
|
|
5
|
+
**Licensed Work:** LobsterBoard
|
|
6
|
+
The Licensed Work is (c) 2025-2026 Rich Curry.
|
|
7
|
+
|
|
8
|
+
**Additional Use Grant:** You may use the Licensed Work for any non-commercial purpose, including personal use, educational use, internal company use (not offered as a commercial product or service), and contributions back to the project.
|
|
9
|
+
|
|
10
|
+
**Change Date:** February 15, 2030
|
|
11
|
+
|
|
12
|
+
**Change License:** MIT License
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Terms
|
|
17
|
+
|
|
18
|
+
The Licensor hereby grants you the right to copy, modify, create derivative works, redistribute, and make non-commercial use of the Licensed Work.
|
|
19
|
+
|
|
20
|
+
**Commercial Use** means any use of the Licensed Work that is primarily intended for or directed toward commercial advantage or monetary compensation. This includes, but is not limited to:
|
|
21
|
+
|
|
22
|
+
- Selling the Licensed Work or derivative works
|
|
23
|
+
- Offering the Licensed Work as part of a paid product or service
|
|
24
|
+
- Using the Licensed Work to provide a commercial hosted service
|
|
25
|
+
|
|
26
|
+
If you wish to use the Licensed Work commercially, you must obtain a separate commercial license from the Licensor. Contact: **curbob@gmail.com**
|
|
27
|
+
|
|
28
|
+
Effective on the Change Date, or the fourth anniversary of the first publicly available distribution of a specific version of the Licensed Work under this License, whichever comes first, the Licensor hereby grants you rights under the terms of the Change License, and the rights granted under the Business Source License for that version terminate.
|
|
29
|
+
|
|
30
|
+
If your use of the Licensed Work does not comply with the requirements currently in effect as described in this License, you must purchase a commercial license from the Licensor, its affiliated entities, or authorized resellers, or you must refrain from using the Licensed Work.
|
|
31
|
+
|
|
32
|
+
All copies of the original and modified Licensed Work, and derivative works of the Licensed Work, are subject to this License. This License applies separately for each version of the Licensed Work.
|
|
33
|
+
|
|
34
|
+
**NOTICE:** This License does not grant you any right in any trademark or logo of the Licensor or its affiliates.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
THIS SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,25 +1,23 @@
|
|
|
1
1
|
# 🦞 LobsterBoard
|
|
2
2
|
|
|
3
|
-
A self-hosted, drag-and-drop dashboard builder with
|
|
3
|
+
A self-hosted, drag-and-drop dashboard builder with 50 widgets, a template gallery, custom pages, and zero cloud dependencies. One Node.js server, no frameworks, no build step needed.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**Works standalone or with [OpenClaw](https://github.com/openclaw/openclaw).** LobsterBoard is a general-purpose dashboard — use it to monitor your homelab, track stocks, display weather, manage todos, or anything else. OpenClaw users get bonus widgets (auth status, cron jobs, activity logs), but they're completely optional.
|
|
6
6
|
|
|
7
|
-

|
|
8
8
|
|
|
9
9
|
## Quick Start
|
|
10
10
|
|
|
11
|
-
### Option A: npm install
|
|
12
|
-
|
|
13
11
|
```bash
|
|
14
12
|
npm install lobsterboard
|
|
15
13
|
cd node_modules/lobsterboard
|
|
16
14
|
node server.cjs
|
|
17
15
|
```
|
|
18
16
|
|
|
19
|
-
|
|
17
|
+
Or clone it:
|
|
20
18
|
|
|
21
19
|
```bash
|
|
22
|
-
git clone https://github.com/
|
|
20
|
+
git clone https://github.com/Curbob/LobsterBoard.git
|
|
23
21
|
cd LobsterBoard
|
|
24
22
|
npm install
|
|
25
23
|
node server.cjs
|
|
@@ -27,209 +25,258 @@ node server.cjs
|
|
|
27
25
|
|
|
28
26
|
Open **http://localhost:8080** → press **Ctrl+E** to enter edit mode → drag widgets from the sidebar → click **💾 Save**.
|
|
29
27
|
|
|
30
|
-
##
|
|
31
|
-
|
|
32
|
-
LobsterBoard runs as a single Node.js server (`server.cjs`) that:
|
|
28
|
+
## Features
|
|
33
29
|
|
|
34
|
-
- **
|
|
35
|
-
- **
|
|
36
|
-
- **
|
|
37
|
-
- **
|
|
38
|
-
- **
|
|
30
|
+
- **Drag-and-drop editor** — visual layout with 20px snap grid, resize handles, property panel
|
|
31
|
+
- **50 widgets** — system monitoring, weather, calendars, RSS, smart home, finance, AI/LLM tracking, notes, and more
|
|
32
|
+
- **Template Gallery** — export, import, and share dashboard layouts with auto-screenshot previews; import as merge or full replace
|
|
33
|
+
- **Custom pages** — extend your dashboard with full custom pages (notes, kanban boards, anything)
|
|
34
|
+
- **Canvas sizes** — preset resolutions (1920×1080, 2560×1440, etc.) or custom sizes
|
|
35
|
+
- **Live data** — system stats stream via Server-Sent Events, widgets auto-refresh
|
|
36
|
+
- **Dark theme** — the only correct choice
|
|
37
|
+
- **No cloud** — everything runs locally, your data stays yours
|
|
39
38
|
|
|
40
|
-
|
|
39
|
+
## Configuration
|
|
41
40
|
|
|
42
41
|
```bash
|
|
43
42
|
PORT=3000 node server.cjs # Custom port
|
|
44
|
-
HOST=0.0.0.0 node server.cjs # Expose to network
|
|
43
|
+
HOST=0.0.0.0 node server.cjs # Expose to network
|
|
45
44
|
```
|
|
46
45
|
|
|
47
|
-
|
|
46
|
+
Widget settings are edited in the right-hand panel during edit mode. All configuration saves to `config.json`.
|
|
48
47
|
|
|
49
|
-
|
|
48
|
+
## Template Gallery
|
|
50
49
|
|
|
51
|
-
-
|
|
52
|
-
- **Click a widget** to select it and edit properties in the right panel
|
|
53
|
-
- **Drag to reposition**, resize with the corner handle
|
|
54
|
-
- **20px snap grid** keeps things aligned
|
|
55
|
-
- **Canvas sizes** — 1920×1080, 2560×1440, or custom
|
|
56
|
-
- **Font scale** — adjust text size globally across all widgets
|
|
57
|
-
- Click **💾 Save** to persist, then exit edit mode for the live dashboard
|
|
50
|
+
LobsterBoard includes a built-in template system for sharing and reusing dashboard layouts.
|
|
58
51
|
|
|
59
|
-
|
|
52
|
+
- **Export** your current dashboard as a template (auto-captures a screenshot preview)
|
|
53
|
+
- **Browse** the template gallery to discover pre-built layouts
|
|
54
|
+
- **Import** templates in two modes:
|
|
55
|
+
- **Replace** — swap your entire dashboard for the template
|
|
56
|
+
- **Merge** — append the template's widgets below your existing layout
|
|
57
|
+
- Templates are stored in the `templates/` directory and can be shared as folders
|
|
60
58
|
|
|
61
|
-
## Widgets
|
|
59
|
+
## Widgets
|
|
62
60
|
|
|
63
61
|
### 🖥️ System Monitoring
|
|
64
|
-
Live data via SSE — updates every 2–30 seconds automatically.
|
|
65
|
-
|
|
66
62
|
| Widget | Description |
|
|
67
63
|
|--------|-------------|
|
|
68
|
-
|
|
|
69
|
-
|
|
|
70
|
-
|
|
|
71
|
-
|
|
|
72
|
-
|
|
|
73
|
-
|
|
74
|
-
### 🦞 OpenClaw Integration
|
|
75
|
-
For users running [OpenClaw](https://github.com/openclaw/openclaw).
|
|
64
|
+
| CPU / Memory | Real-time CPU load and memory usage |
|
|
65
|
+
| Disk Usage | Disk space with ring gauge |
|
|
66
|
+
| Network Speed | Upload/download throughput |
|
|
67
|
+
| Uptime Monitor | System uptime, CPU load, memory summary |
|
|
68
|
+
| Docker Containers | Container list with status |
|
|
76
69
|
|
|
70
|
+
### 🌤️ Weather
|
|
77
71
|
| Widget | Description |
|
|
78
72
|
|--------|-------------|
|
|
79
|
-
|
|
|
80
|
-
|
|
|
81
|
-
| 📋 Activity List | Today's activity from memory files, git commits, and cron runs |
|
|
82
|
-
| ⏰ Cron Jobs | Scheduled jobs with status and last-run times |
|
|
83
|
-
| 🔧 System Log | Parsed gateway log with level/category color coding |
|
|
84
|
-
| 💬 Active Sessions | Count of active OpenClaw sessions |
|
|
85
|
-
| 📊 Token Gauge | Visual gauge of token usage against a limit |
|
|
86
|
-
|
|
87
|
-
### 🤖 AI / LLM Monitoring
|
|
73
|
+
| Local Weather | Current conditions for your city |
|
|
74
|
+
| World Weather | Multi-city weather overview |
|
|
88
75
|
|
|
76
|
+
### ⏰ Time & Productivity
|
|
89
77
|
| Widget | Description |
|
|
90
78
|
|--------|-------------|
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
|
|
|
96
|
-
|
|
97
|
-
### ⏰ Time & Productivity
|
|
79
|
+
| Clock | Analog/digital clock |
|
|
80
|
+
| World Clock | Multiple time zones |
|
|
81
|
+
| Countdown | Timer to a target date |
|
|
82
|
+
| Todo List | Persistent task list |
|
|
83
|
+
| Pomodoro Timer | Work/break timer |
|
|
84
|
+
| Notes | Persistent rich-text notes with auto-save |
|
|
98
85
|
|
|
86
|
+
### 📰 Media & Content
|
|
99
87
|
| Widget | Description |
|
|
100
88
|
|--------|-------------|
|
|
101
|
-
|
|
|
102
|
-
|
|
|
103
|
-
|
|
|
104
|
-
|
|
|
105
|
-
|
|
|
106
|
-
| 📅 Calendar | Upcoming events from any iCal (.ics) feed URL |
|
|
107
|
-
| 📝 Notes | Editable text area on the dashboard |
|
|
108
|
-
|
|
109
|
-
### 🌤️ Weather
|
|
89
|
+
| RSS Ticker | Scrolling feed from any RSS/Atom URL |
|
|
90
|
+
| Calendar | iCal feed display (Google, Apple, Outlook) |
|
|
91
|
+
| Now Playing | Currently playing media |
|
|
92
|
+
| Quote of Day | Random inspirational quotes |
|
|
93
|
+
| Quick Links | Bookmark grid |
|
|
110
94
|
|
|
95
|
+
### 🤖 AI / LLM Monitoring
|
|
111
96
|
| Widget | Description |
|
|
112
97
|
|--------|-------------|
|
|
113
|
-
|
|
|
114
|
-
|
|
|
98
|
+
| Claude Usage | Anthropic API spend tracking |
|
|
99
|
+
| AI Cost Tracker | Monthly cost breakdown |
|
|
100
|
+
| API Status | Provider availability |
|
|
101
|
+
| Active Sessions | OpenClaw session monitor |
|
|
102
|
+
| Token Gauge | Context window usage |
|
|
115
103
|
|
|
116
104
|
### 💰 Finance
|
|
117
|
-
|
|
118
105
|
| Widget | Description |
|
|
119
106
|
|--------|-------------|
|
|
120
|
-
|
|
|
121
|
-
|
|
|
107
|
+
| Stock Ticker | Live stock prices (requires API key) |
|
|
108
|
+
| Crypto Price | Cryptocurrency tracker |
|
|
122
109
|
|
|
123
110
|
### 🏠 Smart Home
|
|
124
|
-
|
|
125
111
|
| Widget | Description |
|
|
126
112
|
|--------|-------------|
|
|
127
|
-
|
|
|
128
|
-
|
|
|
129
|
-
|
|
|
130
|
-
|
|
131
|
-
### 📰 Media & Content
|
|
132
|
-
|
|
133
|
-
| Widget | Description |
|
|
134
|
-
|--------|-------------|
|
|
135
|
-
| 📰 RSS Ticker | Headlines from any RSS/Atom feed (server-side proxy) |
|
|
136
|
-
| 🎵 Now Playing | Currently playing track from Spotify/music API |
|
|
137
|
-
| 💭 Quote of Day | Random inspirational quotes |
|
|
138
|
-
| 📧 Unread Emails | Email count from API endpoint |
|
|
113
|
+
| Indoor Climate | Temperature/humidity sensors |
|
|
114
|
+
| Camera Feed | IP camera stream |
|
|
115
|
+
| Power Usage | Energy monitoring |
|
|
139
116
|
|
|
140
117
|
### 🔗 Embeds & Media
|
|
141
|
-
|
|
142
118
|
| Widget | Description |
|
|
143
119
|
|--------|-------------|
|
|
144
|
-
|
|
|
145
|
-
|
|
|
146
|
-
| 🌐 Image Embed | Display an image from a URL |
|
|
147
|
-
| 🔗 Quick Links | Bookmark grid with favicons |
|
|
148
|
-
| 📺 Iframe Embed | Embed any web page |
|
|
149
|
-
|
|
150
|
-
### 📦 Utilities
|
|
120
|
+
| Image / Random Image / Web Image / Latest Image | Static, rotating, remote, or latest images (with browse button for directory selection) |
|
|
121
|
+
| Iframe Embed | Embed any webpage |
|
|
151
122
|
|
|
123
|
+
### 🔧 Utility
|
|
152
124
|
| Widget | Description |
|
|
153
125
|
|--------|-------------|
|
|
154
|
-
|
|
|
155
|
-
|
|
|
156
|
-
|
|
|
157
|
-
|
|
|
126
|
+
| Auth Status | Authentication status display |
|
|
127
|
+
| Sleep Score | Garmin sleep score widget |
|
|
128
|
+
| GitHub Stats | Repository stats — stars, forks, open issues, open PRs |
|
|
129
|
+
| Unread Emails | Email inbox counter |
|
|
130
|
+
| System Log | Recent system log entries |
|
|
131
|
+
| Activity List | Activity timeline |
|
|
132
|
+
| Cron Jobs | Cron job status monitor |
|
|
133
|
+
| LobsterBoard Release | Version update checker |
|
|
134
|
+
| OpenClaw Release | OpenClaw version checker |
|
|
135
|
+
| Release | Generic release tracker |
|
|
158
136
|
|
|
159
137
|
### 🎨 Layout
|
|
160
|
-
|
|
161
138
|
| Widget | Description |
|
|
162
139
|
|--------|-------------|
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
|
|
|
140
|
+
| Header / Text | Custom text with formatting |
|
|
141
|
+
| Horizontal Line | Divider |
|
|
142
|
+
| Vertical Line | Vertical divider |
|
|
143
|
+
| Pages Menu | Navigation for custom pages |
|
|
166
144
|
|
|
167
|
-
##
|
|
145
|
+
## Custom Pages
|
|
146
|
+
|
|
147
|
+
LobsterBoard includes a pages system for adding full custom pages beyond the widget dashboard. Pages get their own route, nav entry, and optional server-side API.
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
pages/
|
|
151
|
+
└── my-page/
|
|
152
|
+
├── page.json # Metadata (title, icon, order)
|
|
153
|
+
├── index.html # Page UI
|
|
154
|
+
└── api.cjs # Optional: server-side API routes
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Pages are auto-discovered on startup. Drop a folder in `pages/`, restart the server, and it appears in the nav.
|
|
158
|
+
|
|
159
|
+
👉 **Full guide with examples:** [`pages/README.md`](pages/README.md)
|
|
160
|
+
|
|
161
|
+
## Run on Boot
|
|
162
|
+
|
|
163
|
+
### macOS (launchd)
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
cat > ~/Library/LaunchAgents/com.lobsterboard.plist << 'EOF'
|
|
167
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
168
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
169
|
+
<plist version="1.0">
|
|
170
|
+
<dict>
|
|
171
|
+
<key>Label</key><string>com.lobsterboard</string>
|
|
172
|
+
<key>RunAtLoad</key><true/>
|
|
173
|
+
<key>KeepAlive</key><true/>
|
|
174
|
+
<key>ProgramArguments</key>
|
|
175
|
+
<array>
|
|
176
|
+
<string>/usr/local/bin/node</string>
|
|
177
|
+
<string>/path/to/lobsterboard/server.cjs</string>
|
|
178
|
+
</array>
|
|
179
|
+
<key>WorkingDirectory</key><string>/path/to/lobsterboard</string>
|
|
180
|
+
<key>EnvironmentVariables</key>
|
|
181
|
+
<dict>
|
|
182
|
+
<key>PORT</key><string>8080</string>
|
|
183
|
+
<key>HOST</key><string>0.0.0.0</string>
|
|
184
|
+
</dict>
|
|
185
|
+
</dict>
|
|
186
|
+
</plist>
|
|
187
|
+
EOF
|
|
188
|
+
|
|
189
|
+
launchctl load ~/Library/LaunchAgents/com.lobsterboard.plist
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Update the paths to match your install location and Node.js binary (`which node`).
|
|
168
193
|
|
|
169
|
-
|
|
194
|
+
### Linux (systemd)
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
sudo cat > /etc/systemd/system/lobsterboard.service << 'EOF'
|
|
198
|
+
[Unit]
|
|
199
|
+
Description=LobsterBoard Dashboard
|
|
200
|
+
After=network.target
|
|
201
|
+
|
|
202
|
+
[Service]
|
|
203
|
+
Type=simple
|
|
204
|
+
User=your-user
|
|
205
|
+
WorkingDirectory=/path/to/lobsterboard
|
|
206
|
+
ExecStart=/usr/bin/node server.cjs
|
|
207
|
+
Environment=PORT=8080 HOST=0.0.0.0
|
|
208
|
+
Restart=always
|
|
209
|
+
RestartSec=5
|
|
210
|
+
|
|
211
|
+
[Install]
|
|
212
|
+
WantedBy=multi-user.target
|
|
213
|
+
EOF
|
|
214
|
+
|
|
215
|
+
sudo systemctl enable lobsterboard
|
|
216
|
+
sudo systemctl start lobsterboard
|
|
217
|
+
```
|
|
170
218
|
|
|
171
|
-
|
|
172
|
-
- **Refresh Interval** — how often the widget polls for data (seconds)
|
|
173
|
-
- **Endpoint** — API URL for data-driven widgets
|
|
174
|
-
- **Location** — city name for weather widgets
|
|
175
|
-
- **iCal URL** — feed URL for the calendar widget (Google Calendar, Outlook, Apple Calendar all supported)
|
|
176
|
-
- **Feed URL** — RSS/Atom feed for the ticker widget
|
|
219
|
+
### pm2 (any OS)
|
|
177
220
|
|
|
178
|
-
|
|
221
|
+
```bash
|
|
222
|
+
npm install -g pm2
|
|
223
|
+
cd /path/to/lobsterboard
|
|
224
|
+
PORT=8080 HOST=0.0.0.0 pm2 start server.cjs --name lobsterboard
|
|
225
|
+
pm2 save
|
|
226
|
+
pm2 startup
|
|
227
|
+
```
|
|
179
228
|
|
|
180
229
|
## API Endpoints
|
|
181
230
|
|
|
182
231
|
| Endpoint | Method | Description |
|
|
183
232
|
|----------|--------|-------------|
|
|
184
233
|
| `/config` | GET/POST | Load/save dashboard layout |
|
|
185
|
-
| `/api/stats` | GET |
|
|
186
|
-
| `/api/
|
|
187
|
-
| `/api/todos` | GET/POST |
|
|
188
|
-
| `/api/
|
|
234
|
+
| `/api/stats/stream` | GET | Live system stats (SSE) |
|
|
235
|
+
| `/api/pages` | GET | List custom pages |
|
|
236
|
+
| `/api/todos` | GET/POST | Todo list data |
|
|
237
|
+
| `/api/notes` | GET/POST | Notes widget data |
|
|
238
|
+
| `/api/templates` | GET | List available templates |
|
|
239
|
+
| `/api/templates/:id` | GET | Get template config |
|
|
240
|
+
| `/api/templates/:id/preview` | GET | Template preview image |
|
|
241
|
+
| `/api/templates/import` | POST | Import a template (merge/replace) |
|
|
242
|
+
| `/api/templates/export` | POST | Export current dashboard as template |
|
|
243
|
+
| `/api/calendar?url=` | GET | Proxy iCal feed |
|
|
189
244
|
| `/api/rss?url=` | GET | Proxy RSS/Atom feed |
|
|
190
|
-
| `/api/
|
|
191
|
-
| `/api/logs` | GET | Last 50 gateway log lines |
|
|
192
|
-
| `/api/system-log` | GET | Structured log entries with levels |
|
|
193
|
-
| `/api/auth` | GET | OpenClaw auth profile info |
|
|
194
|
-
| `/api/releases` | GET | OpenClaw version check (cached 1hr) |
|
|
195
|
-
| `/api/today` | GET | Today's activity summary |
|
|
196
|
-
| `/api/activity` | GET | Recent entries from memory file |
|
|
245
|
+
| `/api/lb-release` | GET | LobsterBoard version check |
|
|
197
246
|
|
|
198
247
|
## File Structure
|
|
199
248
|
|
|
200
249
|
```
|
|
201
|
-
|
|
202
|
-
├── server.cjs # Node.js server
|
|
203
|
-
├──
|
|
204
|
-
├── config.json #
|
|
205
|
-
├── todos.json # Todo list data
|
|
250
|
+
lobsterboard/
|
|
251
|
+
├── server.cjs # Node.js server
|
|
252
|
+
├── app.html # Dashboard builder
|
|
253
|
+
├── config.json # Your saved layout
|
|
206
254
|
├── js/
|
|
207
|
-
│ ├── builder.js #
|
|
208
|
-
│
|
|
255
|
+
│ ├── builder.js # Editor: drag-drop, zoom, config I/O
|
|
256
|
+
│ ├── widgets.js # All 50 widget definitions
|
|
257
|
+
│ └── templates.js # Template gallery & export system
|
|
209
258
|
├── css/
|
|
210
|
-
│ └── builder.css # Dark theme
|
|
211
|
-
|
|
259
|
+
│ └── builder.css # Dark theme styles
|
|
260
|
+
├── templates/ # Dashboard templates
|
|
261
|
+
│ ├── templates.json # Template index
|
|
262
|
+
│ └── */ # Individual template folders
|
|
263
|
+
├── pages/ # Custom pages (auto-discovered)
|
|
264
|
+
│ └── README.md # Page creation guide
|
|
265
|
+
└── package.json
|
|
212
266
|
```
|
|
213
267
|
|
|
214
|
-
##
|
|
215
|
-
|
|
216
|
-
LobsterBoard is published as `lobsterboard` on npm. The package exports:
|
|
268
|
+
## License
|
|
217
269
|
|
|
218
|
-
|
|
219
|
-
// ESM
|
|
220
|
-
import { WIDGETS } from 'lobsterboard/widgets';
|
|
221
|
-
import { state } from 'lobsterboard/builder';
|
|
270
|
+
This project is licensed under the **Business Source License 1.1 (BSL-1.1)**.
|
|
222
271
|
|
|
223
|
-
|
|
224
|
-
<script src="https://unpkg.com/lobsterboard"></script>
|
|
225
|
-
```
|
|
272
|
+
You are free to use, modify, and self-host LobsterBoard for **non-commercial purposes**. Commercial use requires a separate license. See [LICENSE](LICENSE) for full terms.
|
|
226
273
|
|
|
227
|
-
|
|
274
|
+
## Commercial Licensing
|
|
228
275
|
|
|
229
|
-
|
|
276
|
+
For commercial use, OEM licensing, or enterprise deployments, contact:
|
|
230
277
|
|
|
231
|
-
|
|
278
|
+
📧 **curbob** on GitHub — [github.com/Curbob](https://github.com/Curbob)
|
|
232
279
|
|
|
233
280
|
---
|
|
234
281
|
|
|
235
|
-
Made with 🦞 by [
|
|
282
|
+
Made with 🦞 by [Curbob](https://github.com/Curbob)
|