npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@rubanrubi/hardhat-dashboard

v0.2.2

Published

A Hardhat plugin that routes transaction signing through a local browser dashboard.

Readme

@rubanrubi/hardhat-dashboard

A Hardhat plugin that provides a secure, browser-based dashboard for reviewing and signing transactions during smart contract development. It eliminates the need to store private keys or mnemonics in hardhat.config.ts — all signing is delegated to MetaMask or a connected hardware wallet (Ledger/Trezor).

Think of it as Truffle Dashboard, but for Hardhat.


✨ Features

  • 🔐 No private keys on disk — signing happens entirely in your browser wallet
  • 🖥️ Local dashboard UI — review every transaction before it hits the chain
  • Auto-decode transactions — contract ABIs are synced after hardhat compile for human-readable call details
  • 🔌 Drop-in integration — just add --network dashboard to any Hardhat command
  • 📋 Session history — track confirmed, rejected, and failed transactions
  • 🔒 Localhost only — the server binds to 127.0.0.1; no network exposure

📦 Installation

npm install --save-dev @rubanrubi/hardhat-dashboard

🚀 Quick Start

1. Register the plugin

Add the import to your hardhat.config.ts:

import "@rubanrubi/hardhat-dashboard";

Or in JavaScript (hardhat.config.js):

require("@rubanrubi/hardhat-dashboard");

2. Start the dashboard

npx hardhat dashboard

This starts a local server at http://localhost:24012 and opens it in your browser automatically. Connect your MetaMask wallet to the page.

3. Run any Hardhat command with --network dashboard

# Compile first (ABIs are synced to the dashboard for tx decoding)
npx hardhat compile

# Deploy via the dashboard
npx hardhat run scripts/deploy.ts --network dashboard

# Or run any script/task
npx hardhat run scripts/interact.ts --network dashboard

Each transaction appears in the browser UI. Review the decoded contract call details and click Confirm to sign via MetaMask, or Reject to cancel.


⚙️ Configuration

You can customize the plugin in your hardhat.config.ts:

import { defineConfig } from "hardhat/config";
import "@rubanrubi/hardhat-dashboard";

export default defineConfig({
  solidity: "0.8.24",

  dashboardPlugin: {
    port: 24012,              // Port for the dashboard server (default: 24012)
    networkName: "dashboard", // Name of the auto-registered network (default: "dashboard")
    autoOpen: true,           // Open browser automatically on start (default: true)
  },
});

CLI Options

# Override port from the command line
npx hardhat dashboard --port 3000

🏗️ How It Works

┌───────────────────┐       JSON-RPC        ┌─────────────────────┐
│                   │  ──────────────────▶  │                     │
│   Hardhat CLI     │                       │  Dashboard Server   │
│  (your scripts)   │  ◀──────────────────  │  (localhost:24012)  │
│                   │       Response         │                     │
└───────────────────┘                       └─────────┬───────────┘
                                                      │ WebSocket
                                                      ▼
                                            ┌─────────────────────┐
                                            │                     │
                                            │   Browser Dashboard │
                                            │   (React UI)        │
                                            │                     │
                                            │   ┌───────────────┐ │
                                            │   │   MetaMask /   │ │
                                            │   │   Ledger /     │ │
                                            │   │   Trezor       │ │
                                            │   └───────────────┘ │
                                            └─────────────────────┘
  1. Hardhat sends JSON-RPC requests to the local dashboard server
  2. Read-only calls (eth_call, eth_getBalance, etc.) are forwarded automatically
  3. Signing requests (eth_sendTransaction, personal_sign, etc.) are queued and displayed in the browser UI
  4. You review the decoded transaction and click Confirm or Reject
  5. MetaMask signs the transaction — the private key never leaves the wallet
  6. The signed response is relayed back to Hardhat

🔑 Security

  • Private keys are never stored, logged, or transmitted by the plugin
  • The dashboard server binds to 127.0.0.1 only — it is not accessible over the network
  • The /rpc endpoint rejects requests not originating from localhost
  • All signing is handled natively by MetaMask or your hardware wallet

📋 Requirements

| Requirement | Version | |---|---| | Node.js | ≥ 18.x | | Hardhat | ≥ 2.22.0 | | Browser | Chrome or Edge with MetaMask |


🛠️ Development

# Clone the repository
git clone https://github.com/ruban/hardhat-dashboard.git
cd hardhat-dashboard

# Install dependencies
npm install

# Build the project
npm run build

# Run the dashboard UI locally (no Hardhat needed)
npm run dev

# Run tests
npm test

📄 License

MIT — see LICENSE for details.