{"repo":"devapro/n-dashboard","free":true,"listed":false,"github":"https://github.com/devapro/n-dashboard","clone":"git clone https://github.com/devapro/n-dashboard.git","description":"A self-hosted dashboard where every widget is a TypeScript function on disk — the server runs it on a clock, an MQTT message or a webhook, validates what it returns, and pushes the result to every open tab.","language":"TypeScript","stars":11,"topics":["dashboard","grafana","homer","self-hosted","homelab","mqtt"],"license":"MIT","category":"self-hosted-apps","readme_excerpt":"n-dashboard A personal single-page dashboard for a trusted LAN. Every widget is a TypeScript function on disk; the server runs it on a schedule, on an MQTT message or on a webhook, validates what it returns, and pushes the result to every open tab. Every card above is one file. Writing one looks like this — the editor knows the whole ctx API, because it is served the same ctx.d.ts the runtime uses: - Widgets are functions. No plugin format, no config-driven renderer path. Summing a field, mixing two APIs, remembering what you already saw — all the same amount of work, because it is all just code. - Typed, and checked in the browser. Monaco runs the real TypeScript service against the same ctx.d.ts the server validates with, so a wrong return type is a red squiggle rather than a blank card at 3am. - Nothing silently stale. A failing widget keeps its last good value, dimmed, with the error on hover and a visible backoff. --- Quick start Needs Node 26+ — the server runs its TypeScript directly, no build step and no transpiler, which is also what gives widget stack traces honest line numbers. npm too; Docker only for the container or the dev MQTT broker. Open . The first run copies the seventeen examples from examples/ into data/widgets/ , disabled — enable the ones you want under /admin . Eight of them need no key and no connection, so crypto-price , weather-hourly , hn-top , npm-downloads , endpoint-health , btc-candles , api-sum and disk-usage all work on a fresh clone. script","default_branch":null,"files":null,"tree":[],"storefront":"/r/devapro","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/devapro/n-dashboard/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}