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

@meridianjs/admin-dashboard

v1.1.0

Published

The MeridianJS admin dashboard. A Linear.app-inspired React SPA built with Vite, TanStack Query, Tailwind CSS, and shadcn/ui. Served as a static site alongside your API.

Readme

@meridianjs/admin-dashboard

The MeridianJS admin dashboard. A Linear.app-inspired React SPA built with Vite, TanStack Query, Tailwind CSS, and shadcn/ui. Served as a static site alongside your API.

Running in Development

The dashboard is automatically started when you run meridian dev from a scaffolded project that includes it. It starts on port 5174 (configurable) and proxies API calls to port 9000.

To run the dashboard standalone:

cd node_modules/@meridianjs/admin-dashboard
npm run dev

Or via the CLI:

meridian serve-dashboard
meridian serve-dashboard --port 3000

Tech Stack

| Concern | Library | |---|---| | Framework | React 18 | | Build | Vite 5 | | Routing | React Router v6 | | Data fetching | TanStack Query v5 | | Styling | Tailwind CSS + shadcn/ui | | Drag & drop | @dnd-kit | | Notifications | Sonner | | Icons | Lucide React | | Theming | next-themes (light / dark) |

Features

  • Kanban board — custom project statuses as columns, drag-and-drop issue reorder, column reorder, hex-tinted column backgrounds
  • Issue list — filterable by status, priority, type, assignee, sprint
  • Issue detail — inline edit, full-page view, sub-issues, comments, attachments, time tracking
  • Sprint management — create, start, complete sprints; move issues between sprints
  • Project timeline — Gantt chart with business-day calculations from @meridianjs/org-calendar
  • Workspace settings — member management (invite, role change, remove), team management with inline member lists
  • Project access — per-project member and team grants via ProjectAccessDialog
  • Notifications bell — real-time count, mark as read
  • Custom RBAC roles — create roles with permission strings, assign to users
  • Org settings — working-day schedule, public holiday management

Widget / Extension System

Inject custom React components into named zones in the dashboard UI without modifying the core package.

Defining Widgets

Create src/admin/widgets/index.tsx in your project:

import React from "react"

function MyBanner({ projectId }: { projectId: string }) {
  return (
    <div className="mx-6 my-2 p-3 rounded border border-border text-sm text-muted-foreground">
      Custom panel for project: {projectId}
    </div>
  )
}

export default [
  { zone: "project.board.before", component: MyBanner },
]

Widgets are compiled at startup by meridian dev / meridian serve-dashboard via esbuild and loaded by the dashboard at runtime. React is shared via window.__React to prevent duplicate instances.

Available Zones

| Zone | Page | Props | |---|---|---| | issue.details.before | Issue detail | { issue } | | issue.details.after | Issue detail | { issue } | | issue.details.sidebar | Issue detail page | { issue } | | project.board.before | Kanban board | { projectId } | | project.board.after | Kanban board | { projectId } | | project.issues.before | Issue list | { projectId } | | project.issues.after | Issue list | { projectId } | | project.timeline.before | Gantt chart | { projectId } | | project.timeline.after | Gantt chart | { projectId } | | project.sprints.before | Sprints page | { projectId } | | project.sprints.after | Sprints page | { projectId } | | workspace.settings.before | Workspace settings | { workspaceId } | | workspace.settings.after | Workspace settings | { workspaceId } | | login.before | Login page | {} | | login.after | Login page | {} |

Environment Variables

| Variable | Default | Description | |---|---|---| | API_URL | http://localhost:9000 | API base URL — must be set in production | | DASHBOARD_PORT | 5174 | Port the dashboard serves on |

License

MIT