No description
Visual upgrade — keeps same data flow + layout structure, just elevates the look: Header: - Glassmorphism: sticky + bg-background/70 + backdrop-blur-xl - Brand mark: zap icon in accent-tinted gradient box with glow - Title: 'Command Center' (was 'n8n Workflow Monitor') - Animated live dot with glow-success on the indicator Stat cards: - Gradient: from-card to-transparent - Icon chip in top-right (per-stat: Power, Activity, CheckCircle, AlertCircle, Gauge) - Bigger numbers (3xl), tracking-tight - Color glow classes (glow-success, glow-error, glow-warning) when relevant - Sub-text under the number for context - Border-strong on hover Anomalies: - Severity-tinted icon chips (error/pending/warning soft backgrounds) - New 'All clear' state with success glow when zero anomalies - Each row has hover bg-muted/40 - n8n link in a pill button (border + bg-muted/50) Workflows + Activity: - Reusable Panel wrapper with icon + title + meta badge - Empty states with icon + message + hint - Status pills: rings + uppercase tracking-wider (looks more 'operator console') - Scrollable lists (max-h-96) with thin custom scrollbar - Error rows: subtle red hover bg (error-soft/40) Palette refinements: - Background: deeper (#08080a) - Border: rgba white 8% (more subtle) - Status: success/emerald, error/rose, warning/amber, pending/yellow - 'Soft' color tokens for translucent backgrounds CSS: - Subtle radial gradient bg (accent top-left, error bottom-right) - Fixed background-attachment for nice scroll feel - Custom thin scrollbar - glow-* utility classes - fadeIn keyframe Bundle: 223 KB JS / 69 KB gzipped, 16 KB CSS |
||
|---|---|---|
| dashboard | ||
| .env.example | ||
| .gitignore | ||
| docker-compose.yml | ||
| pocketbase_schema.json | ||
| poller-v2.n8n.json | ||
| poller.n8n.json | ||
| README.md | ||
n8n Workflow Monitor
Read-only dashboard: n8n → PocketBase → shadcn-style React dashboard.
What's in here
n8n Monitoring Dashboard - Poller— already created in your n8n instance (draft, not yet activated). Polls/api/v1/workflowsand/api/v1/executionsevery 5 minutes and upserts into PocketBase.pocketbase_schema.json— importable PocketBase collections (workflows,executions).dashboard/— the React + Tailwind + shadcn-style dashboard, reads from PocketBase with realtime updates.
Setup
1. PocketBase
- In your PocketBase Admin UI, go to Settings → Import collections and upload
pocketbase_schema.json. This createsworkflowsandexecutionswith public read access and admin-only write access. - Create an API token / auth for a superuser (or an app-level API key) the poller workflow can use to write — the poller authenticates with a plain Bearer token in the
PocketBase Admincredential (see below).
2. n8n poller workflow
The workflow is already created: n8n Monitoring Dashboard - Poller (in your personal project). Before activating it:
- Create credential "n8n API Key" (type: HTTP Header Auth) — header
X-N8N-API-KEY, value: an n8n API key from Settings → API. - Create credential "PocketBase Admin" (type: HTTP Header Auth) — header
Authorization, value:Bearer <your PocketBase superuser token>. - Every HTTP node in the workflow uses
https://pocketbase.apphub.co.zaas a guessed placeholder base URL — find/replace with your real PocketBase URL if different. - Activate the workflow.
3. Dashboard
cd dashboard
npm install
Edit src/lib/pocketbase.ts and set POCKETBASE_URL to your real PocketBase instance.
npm run dev
Open the printed local URL. For production, npm run build and serve the dist/ folder (e.g. behind the same reverse proxy/Cloudflare Tunnel setup you use for your other self-hosted tools).
Notes
- The dashboard is read-only — it only ever calls PocketBase's list/realtime endpoints, never n8n directly, and never writes.
- All writes to PocketBase happen from the poller workflow only, authenticated as admin — the dashboard's PocketBase access can stay on the public read rules set in the schema.
- Realtime: the dashboard subscribes to PocketBase's realtime feed, so it updates within moments of the poller's next 5-minute sync — no page refresh needed.