← website
Run it

Dashboard

An optional web UI that ships in the repository under dashboard/. It is not hosted anywhere and there is nothing to sign into — you run it on your own machine, pointed at your own server, for as long as you want to look at it. It is a window on a running server rather than a place to build things: watch delivery, read logs, inspect queue health, and perform the few operational actions that are easier to click than to curl. Templates and workflows are still authored in code.

note

The dashboard is not published to npm, not deployed for you, and not required to run NotifKit. Everything it shows is available from the REST API and the MCP server — it exists for the times a graph answers the question faster than a query does.

Running it

It is a Next.js app in the repository, run the same way you run any local dev server. Clone NotifKit, point it at your API, and start it — then close it again when you are done.

cd dashboard
npm install
npm run dev

Two environment variables configure it, both with development defaults:

VariableDefaultWhat it is
NEXT_PUBLIC_API_URL http://localhost:3000 Base URL of the NotifKit API the dashboard reads from.
NEXT_PUBLIC_ADMIN_KEY test_admin_key Your ADMIN_API_KEY. Used to list projects, then to fetch each project's own key.
keep it local

Both variables are NEXT_PUBLIC_, which in Next.js means they are inlined into the JavaScript served to the browser — admin key included. On your own machine that is fine, and it is why the dashboard is meant to be run locally rather than deployed. If you ever do host it, put it behind your own authentication on a private network first; published to a public URL as it stands, it hands your admin key to anyone who loads the page.

What each page shows

PageShows
OverviewA live feed of delivery events over server-sent events, straight from /v1/events/stream.
LogsPer-attempt delivery history — channel, provider, status, timing — with a single notification's full trail on selection.
System Health/v1/system/health and /v1/system/metrics: dependencies, worker heartbeats, and the Prometheus counters.
Analytics & QueueThroughput and stream depth, for spotting a backlog before it becomes a page.
Dead LettersThe DLQ, with replay and discard.
ScheduledEverything queued for a future sendAt, with cancel.
WorkflowsRegistered workflows and their runs, including which step a run is parked on. Triggering a run is available here.
TemplatesWhat is currently synced, and what each template renders per channel.
UsersA user's contacts, channel and topic preferences, and quiet hours.
Projects & KeysProjects, their API keys, and per-project rate limits.

What it deliberately does not do

There is no template editor and no workflow builder. You cannot draw a sequence, and there is nothing to publish. Templates are synced from code on deploy and workflows are files in your repository, so that both stay in version control where they can be reviewed, diffed and reverted with the rest of your application.

The write actions the dashboard does expose are operational rather than authorial — replaying a dead letter, cancelling a scheduled send, triggering a workflow run, rotating a project key. Those are decisions you make once, in the moment, in response to something that already happened; none of them is a piece of behaviour worth keeping in a diff.