feat: scaffold PulseNode dashboard (M1)

Next.js 16 + TypeScript + Tailwind v4 app with a YAML-driven config
system: schema validation (zod), .env interpolation, and a widget
registry rendering bookmark/search/group widgets. CSS custom
properties (--pn-*) drive theming and are overridable from
config.yml's theme.variables. Config load errors surface as a
readable error page instead of crashing the app.

Hot reload, docker/system/http collectors, and the WebSocket push
layer land in later milestones per the approved plan.
This commit is contained in:
2026-08-17 13:49:55 +02:00
commit 80c2362ac2
27 changed files with 5729 additions and 0 deletions
+38
View File
@@ -0,0 +1,38 @@
{
"name": "pulsenode",
"version": "0.1.0",
"private": true,
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "eslint"
},
"dependencies": {
"chokidar": "^5.0.0",
"dockerode": "^5.0.1",
"dotenv": "^17.4.2",
"next": "16.3.1",
"p-limit": "^7.3.1",
"react": "19.2.8",
"react-dom": "19.2.8",
"systeminformation": "^5.33.1",
"ws": "^8.21.3",
"yaml": "^2.9.0",
"zod": "^4.4.3"
},
"devDependencies": {
"@tailwindcss/postcss": "^4",
"@types/dockerode": "^4.0.1",
"@types/node": "^20",
"@types/react": "^19",
"@types/react-dom": "^19",
"@types/ws": "^8.18.1",
"eslint": "^9",
"eslint-config-next": "16.3.1",
"tailwindcss": "^4",
"tsx": "^4.23.12",
"typescript": "^5"
},
"packageManager": "pnpm@11.21.0"
}