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

prism-viz-engine

v0.1.0

Published

prism-viz-engine — the assembled cluster, built. Layer 01 generate -> JSON Canvas wire -> layer 02 render (xyflow) -> layer 03 substrate (Kuzu) -> layer 04 interactive shell (Waku click-any-box). Mounts standalone, composed into another app, or inside the

Readme

prism-viz-engine

The canvas is the instrument. A diagramming engine where every box on screen is a real module file that opens — not a picture of a system, the system drawing itself.

Built for the Griot Creative Suite. One engine, mounted by many surfaces, so Kweli, Djeli, Prism and Synaptiq share a renderer instead of drifting three copies of one.

npm install prism-viz-engine

React 18 is a peer dependency — the host supplies it, the engine never bundles a second copy.


The four layers

| layer | what it does | entry | |---|---|---| | 01 · generate | authors archify-shaped IR, gated by archify's own validator plus a grounding rule | src/layers/01-generate/archify-ir.ts | | wire | JSON Canvas — the neutral format between generators and canvases | src/core/json-canvas.ts | | 02 · render | two renderers chosen by what is being drawn, never by a toggle | src/layers/02-render/route.ts | | 03 · substrate | harvest adapter over the live code graph | src/layers/03-substrate/harvest-adapter.ts | | 04 · shell | the Waku shell where every box opens its source | src/layers/04-shell/Shell.tsx |

The wire format is real JSON Canvas — the same file opens in Obsidian.


Mount it

Standalone

npm run dev          # vite + the reveal sidecar

Composed into a host app

import { mountVizEngine } from "prism-viz-engine"

const handle = mountVizEngine({
  element: document.getElementById("canvas")!,
  canvas: myJsonCanvas,
})

Data only — no React, no xyflow in your bundle

import { validate, emptyCanvas } from "prism-viz-engine/json-canvas"
import { LAYER_ROLES, isLayerRole } from "prism-viz-engine/layer-roles"

The eleven layer roles

The output taxonomy every placed node is routed to. Copied byte-verbatim from the Griot Stack LNAME array — middle dots and all, because the emitter, the canvas and the plan all key on exact string equality.

Djeli · container          Collaboration · GenTeam     Creation · build/content/3D
Capture                    Intelligence · Super Agent  Governance · Governor
Model-making / data science  Memory · foundation       Deployment
Suite meta                 Cross-cutting rails

A finding that fits no role is flagged unplaceable — never force-fit into a twelfth. An unfilled layer is reported as unfilled; no source is ever invented to fill it.


Emit a static screen

Writes a self-contained HTML canvas — no vite, no sidecar, no external references — that any watcher-based panel can serve.

node scripts/emit-screen.mjs --in <canvas.json> --title "..."
node scripts/emit-screen.mjs --self

The trade is stated rather than hidden: a static screen has no reveal-to-source, because nothing is listening. Layout, lanes, layer colour and the file:line on every card all travel.


Honest seams

Declared, not disguised:

  • prism-graph and Excalidraw renderers are named in the router but unbuilt — the router reports what it fell back to rather than pretending.
  • loadFromKuzu throws rather than returning invented rows.
  • Reading Depth (zoom-linked level of detail) is fully specified and not yet applied.

Licence

MIT