lobsterboard 0.1.6 → 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 -92
- package/LICENSE +38 -21
- package/README.md +173 -143
- package/app.html +167 -69
- package/css/builder.css +126 -0
- package/dist/lobsterboard.css +1 -1
- package/dist/lobsterboard.esm.js +1 -1
- package/dist/lobsterboard.esm.min.js +1 -1
- package/dist/lobsterboard.umd.js +1 -1
- package/dist/lobsterboard.umd.min.js +1 -1
- package/js/builder.js +237 -26
- package/js/templates.js +284 -0
- package/js/widgets.js +387 -111
- package/package.json +7 -3
- package/server.cjs +349 -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,100 +1,34 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Changelog
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## [0.1.6] - 2026-02-14
|
|
8
|
-
|
|
9
|
-
### Security
|
|
10
|
-
- Fix SSRF vulnerability in RSS feed proxy — blocks requests to private/internal IPs (127.x, 10.x, 192.168.x, localhost) and validates redirect targets. Thanks to @verkoopjezaak for the report and PR (#1).
|
|
11
|
-
|
|
12
|
-
## [Unreleased]
|
|
13
|
-
|
|
14
|
-
### Fixed
|
|
15
|
-
- Text-header widget "Show Border" checkbox now works — toggling it off removes the card background, border, and box-shadow from the `.placed-widget` container
|
|
16
|
-
- 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
|
|
17
|
-
- Add guard in `renderWidget` to skip unknown widget types gracefully
|
|
18
|
-
- Wrap each widget render in try/catch so one bad widget can't prevent others from loading
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## [0.1.0] - 2026-02-05
|
|
23
|
-
|
|
24
|
-
### 🎉 Initial Release
|
|
25
|
-
|
|
26
|
-
The first public version of LobsterBoard - a visual dashboard builder for the OpenClaw community.
|
|
3
|
+
## [0.2.0] - 2025-02-15
|
|
27
4
|
|
|
28
5
|
### Added
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
|
|
44
|
-
#### Widgets (40+)
|
|
45
|
-
- **AI/LLM:** Claude Usage, GPT Usage, Gemini Usage, AI Usage (All), Cost Tracker, API Status, Active Sessions, Token Gauge
|
|
46
|
-
- **Basics:** Local Weather, World Weather, Clock, World Clock, Countdown, Stat Card, Battery Status
|
|
47
|
-
- **System:** CPU/Memory, Disk Usage, Network Speed, Docker, Uptime Monitor
|
|
48
|
-
- **OpenClaw:** Auth Status, Sleep Ring, Release, Activity List, Cron Jobs, System Log
|
|
49
|
-
- **Productivity:** Todo List, Calendar, Email Count, Pomodoro, Notes, GitHub Stats
|
|
50
|
-
- **Finance:** Stock Ticker, Crypto Price
|
|
51
|
-
- **Smart Home:** Indoor Climate, Camera Feed, Power Usage
|
|
52
|
-
- **Entertainment:** Now Playing, Quote of Day
|
|
53
|
-
- **Content:** Quick Links, RSS Feed, Image Embed, Iframe Embed
|
|
54
|
-
- **Bars:** Top Nav Bar, News Ticker, RSS Ticker
|
|
55
|
-
|
|
56
|
-
#### Branding
|
|
57
|
-
- LobsterBoard name and mascot 🦞
|
|
58
|
-
- Logo wordmark for header
|
|
59
|
-
- Mascot illustration for sidebar
|
|
60
|
-
- Favicon and Apple touch icon
|
|
61
|
-
|
|
62
|
-
#### Design
|
|
63
|
-
- Dark theme matching OpenClaw aesthetic
|
|
64
|
-
- Consistent `dash-card` styling across all widgets
|
|
65
|
-
- Widget headers with icons
|
|
66
|
-
- Sample data display (no loading spinners in builder)
|
|
67
|
-
|
|
68
|
-
### Technical Notes
|
|
69
|
-
- Weather widgets use wttr.in (free, no API key required)
|
|
70
|
-
- API keys stored as placeholders for users to fill in post-export
|
|
71
|
-
- AI usage widgets require backend proxy due to CORS
|
|
72
|
-
|
|
73
|
-
---
|
|
74
|
-
|
|
75
|
-
## [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
|
|
76
20
|
|
|
77
21
|
### Changed
|
|
78
|
-
-
|
|
79
|
-
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
- Mascot positioning with `margin-top: auto` in flexbox
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Upcoming
|
|
87
|
-
|
|
88
|
-
### Planned Features
|
|
89
|
-
- GitHub Pages deployment
|
|
90
|
-
- Import/export dashboard layouts (JSON)
|
|
91
|
-
- Widget templates and presets
|
|
92
|
-
- More customization options
|
|
93
|
-
- 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
|
|
94
26
|
|
|
95
|
-
|
|
27
|
+
### Removed
|
|
28
|
+
- GPT Usage widget (standalone) — use AI Cost Tracker or Claude Usage instead
|
|
96
29
|
|
|
97
|
-
##
|
|
30
|
+
## [0.1.6] - 2025-02-14
|
|
98
31
|
|
|
99
|
-
-
|
|
100
|
-
-
|
|
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,156 +25,126 @@ 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
|
-
|
|
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 |
|
|
95
85
|
|
|
86
|
+
### 📰 Media & Content
|
|
96
87
|
| Widget | Description |
|
|
97
88
|
|--------|-------------|
|
|
98
|
-
|
|
|
99
|
-
|
|
|
100
|
-
|
|
|
101
|
-
|
|
|
102
|
-
|
|
|
103
|
-
| 📅 Calendar | Upcoming events from any iCal (.ics) feed URL |
|
|
104
|
-
| 📝 Notes | Editable text area on the dashboard |
|
|
105
|
-
|
|
106
|
-
### 🌤️ 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 |
|
|
107
94
|
|
|
95
|
+
### 🤖 AI / LLM Monitoring
|
|
108
96
|
| Widget | Description |
|
|
109
97
|
|--------|-------------|
|
|
110
|
-
|
|
|
111
|
-
|
|
|
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 |
|
|
112
103
|
|
|
113
104
|
### 💰 Finance
|
|
114
|
-
|
|
115
105
|
| Widget | Description |
|
|
116
106
|
|--------|-------------|
|
|
117
|
-
|
|
|
118
|
-
|
|
|
107
|
+
| Stock Ticker | Live stock prices (requires API key) |
|
|
108
|
+
| Crypto Price | Cryptocurrency tracker |
|
|
119
109
|
|
|
120
110
|
### 🏠 Smart Home
|
|
121
|
-
|
|
122
111
|
| Widget | Description |
|
|
123
112
|
|--------|-------------|
|
|
124
|
-
|
|
|
125
|
-
|
|
|
126
|
-
|
|
|
127
|
-
|
|
128
|
-
### 📰 Media & Content
|
|
129
|
-
|
|
130
|
-
| Widget | Description |
|
|
131
|
-
|--------|-------------|
|
|
132
|
-
| 📰 RSS Ticker | Headlines from any RSS/Atom feed (server-side proxy) |
|
|
133
|
-
| 🎵 Now Playing | Currently playing track from Spotify/music API |
|
|
134
|
-
| 💭 Quote of Day | Random inspirational quotes |
|
|
135
|
-
| 📧 Unread Emails | Email count from API endpoint |
|
|
113
|
+
| Indoor Climate | Temperature/humidity sensors |
|
|
114
|
+
| Camera Feed | IP camera stream |
|
|
115
|
+
| Power Usage | Energy monitoring |
|
|
136
116
|
|
|
137
117
|
### 🔗 Embeds & Media
|
|
138
|
-
|
|
139
118
|
| Widget | Description |
|
|
140
119
|
|--------|-------------|
|
|
141
|
-
|
|
|
142
|
-
|
|
|
143
|
-
| 🌐 Image Embed | Display an image from a URL |
|
|
144
|
-
| 🔗 Quick Links | Bookmark grid with favicons |
|
|
145
|
-
| 📺 Iframe Embed | Embed any web page |
|
|
146
|
-
|
|
147
|
-
### 📦 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 |
|
|
148
122
|
|
|
123
|
+
### 🔧 Utility
|
|
149
124
|
| Widget | Description |
|
|
150
125
|
|--------|-------------|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
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 |
|
|
155
136
|
|
|
156
137
|
### 🎨 Layout
|
|
157
|
-
|
|
158
138
|
| Widget | Description |
|
|
159
139
|
|--------|-------------|
|
|
160
|
-
|
|
|
161
|
-
|
|
|
162
|
-
|
|
|
163
|
-
|
|
164
|
-
## Configuration
|
|
165
|
-
|
|
166
|
-
Widget properties are edited in the right-hand panel when a widget is selected in edit mode. Common options:
|
|
167
|
-
|
|
168
|
-
- **Title** — display name and header visibility toggle
|
|
169
|
-
- **Refresh Interval** — how often the widget polls for data (seconds)
|
|
170
|
-
- **Endpoint** — API URL for data-driven widgets
|
|
171
|
-
- **Location** — city name for weather widgets
|
|
172
|
-
- **iCal URL** — feed URL for the calendar widget (Google Calendar, Outlook, Apple Calendar all supported)
|
|
173
|
-
- **Feed URL** — RSS/Atom feed for the ticker widget
|
|
174
|
-
|
|
175
|
-
All configuration is saved to `config.json` in the project root.
|
|
140
|
+
| Header / Text | Custom text with formatting |
|
|
141
|
+
| Horizontal Line | Divider |
|
|
142
|
+
| Vertical Line | Vertical divider |
|
|
143
|
+
| Pages Menu | Navigation for custom pages |
|
|
176
144
|
|
|
177
145
|
## Custom Pages
|
|
178
146
|
|
|
179
|
-
LobsterBoard includes a
|
|
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.
|
|
180
148
|
|
|
181
149
|
```
|
|
182
150
|
pages/
|
|
@@ -190,63 +158,125 @@ Pages are auto-discovered on startup. Drop a folder in `pages/`, restart the ser
|
|
|
190
158
|
|
|
191
159
|
👉 **Full guide with examples:** [`pages/README.md`](pages/README.md)
|
|
192
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`).
|
|
193
|
+
|
|
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
|
+
```
|
|
218
|
+
|
|
219
|
+
### pm2 (any OS)
|
|
220
|
+
|
|
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
|
+
```
|
|
228
|
+
|
|
193
229
|
## API Endpoints
|
|
194
230
|
|
|
195
231
|
| Endpoint | Method | Description |
|
|
196
232
|
|----------|--------|-------------|
|
|
197
233
|
| `/config` | GET/POST | Load/save dashboard layout |
|
|
198
|
-
| `/api/stats` | GET |
|
|
199
|
-
| `/api/
|
|
200
|
-
| `/api/todos` | GET/POST |
|
|
201
|
-
| `/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 |
|
|
202
244
|
| `/api/rss?url=` | GET | Proxy RSS/Atom feed |
|
|
203
|
-
| `/api/
|
|
204
|
-
| `/api/logs` | GET | Last 50 gateway log lines |
|
|
205
|
-
| `/api/system-log` | GET | Structured log entries with levels |
|
|
206
|
-
| `/api/auth` | GET | OpenClaw auth profile info |
|
|
207
|
-
| `/api/releases` | GET | OpenClaw version check (cached 1hr) |
|
|
208
|
-
| `/api/today` | GET | Today's activity summary |
|
|
209
|
-
| `/api/activity` | GET | Recent entries from memory file |
|
|
245
|
+
| `/api/lb-release` | GET | LobsterBoard version check |
|
|
210
246
|
|
|
211
247
|
## File Structure
|
|
212
248
|
|
|
213
249
|
```
|
|
214
250
|
lobsterboard/
|
|
215
|
-
├── server.cjs # Node.js server
|
|
216
|
-
├──
|
|
217
|
-
├──
|
|
218
|
-
├── config.json # Saved dashboard layout
|
|
219
|
-
├── todos.json # Todo list data
|
|
251
|
+
├── server.cjs # Node.js server
|
|
252
|
+
├── app.html # Dashboard builder
|
|
253
|
+
├── config.json # Your saved layout
|
|
220
254
|
├── js/
|
|
221
|
-
│ ├── builder.js #
|
|
222
|
-
│
|
|
255
|
+
│ ├── builder.js # Editor: drag-drop, zoom, config I/O
|
|
256
|
+
│ ├── widgets.js # All 50 widget definitions
|
|
257
|
+
│ └── templates.js # Template gallery & export system
|
|
223
258
|
├── css/
|
|
224
|
-
│ └── builder.css # Dark theme
|
|
259
|
+
│ └── builder.css # Dark theme styles
|
|
260
|
+
├── templates/ # Dashboard templates
|
|
261
|
+
│ ├── templates.json # Template index
|
|
262
|
+
│ └── */ # Individual template folders
|
|
225
263
|
├── pages/ # Custom pages (auto-discovered)
|
|
226
|
-
│ ├── _shared/ # Shared components (nav bar)
|
|
227
264
|
│ └── README.md # Page creation guide
|
|
228
|
-
└── package.json
|
|
265
|
+
└── package.json
|
|
229
266
|
```
|
|
230
267
|
|
|
231
|
-
##
|
|
232
|
-
|
|
233
|
-
LobsterBoard is published as `lobsterboard` on npm. The package exports:
|
|
268
|
+
## License
|
|
234
269
|
|
|
235
|
-
|
|
236
|
-
// ESM
|
|
237
|
-
import { WIDGETS } from 'lobsterboard/widgets';
|
|
238
|
-
import { state } from 'lobsterboard/builder';
|
|
270
|
+
This project is licensed under the **Business Source License 1.1 (BSL-1.1)**.
|
|
239
271
|
|
|
240
|
-
|
|
241
|
-
<script src="https://unpkg.com/lobsterboard"></script>
|
|
242
|
-
```
|
|
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.
|
|
243
273
|
|
|
244
|
-
|
|
274
|
+
## Commercial Licensing
|
|
245
275
|
|
|
246
|
-
|
|
276
|
+
For commercial use, OEM licensing, or enterprise deployments, contact:
|
|
247
277
|
|
|
248
|
-
|
|
278
|
+
📧 **curbob** on GitHub — [github.com/Curbob](https://github.com/Curbob)
|
|
249
279
|
|
|
250
280
|
---
|
|
251
281
|
|
|
252
|
-
Made with 🦞 by [
|
|
282
|
+
Made with 🦞 by [Curbob](https://github.com/Curbob)
|