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

@frehilm/ordna-web

v0.1.4

Published

Local web Kanban for Ordna — Hono server + React SPA. Re-exports the core API.

Downloads

693

Readme

@frehilm/ordna-web

A local Kanban for Ordna in your browser. Hono server + prebuilt React SPA. Re-exports the entire @frehilm/ordna-core API — no separate core install needed.

Install

pnpm add @frehilm/ordna-web

If you also have @frehilm/ordna-cli globally, just run ordna web — it delegates here.

Run standalone

ordna web
# → opens http://127.0.0.1:7420 in your browser

Flags: --port <n>, --host <h>, --no-open.

Run programmatically

import { runWeb } from "@frehilm/ordna-web";

const handle = await runWeb({
  cwd: "/path/to/repo",
  port: 0,                       // OS-assigned
  openBrowser: false,
  agentHook: {                   // optional
    url: "http://127.0.0.1:9999/agent",
    label: "Claude",
    headers: { "X-Token": "..." },
  },
});

console.log(`Listening on http://127.0.0.1:${handle.port}`);
await handle.close();            // graceful shutdown

Web UI

  • Topbar: brand, tasks-dir crumb, search, theme toggle, shortcuts, primary + New task.
  • Sidebar: Views (All + per-status + Archived) · Priority · Tags. Counts are live.
  • Subbar: current view title and visible/total counts.
  • Board: columns per configured status, drag-and-drop with a rotated floating overlay and optimistic updates (rolls back on server rejection).
  • Cards: id, priority chip, title, tag chips (hashed colors), bottom meta (assignee + AC progress). Hover reveals Edit / Delete action buttons. Click opens a view-mode modal.
  • Modal: read-only by default. Press Edit for in-place editing — title, status, priority, assignee, tags (chip input), depends_on (chip input), structured acceptance-criteria checklist, section textareas. Save / Cancel.
  • Theme: light / dark toggle, persisted in localStorage.

Keyboard shortcuts

| Key | Action | |----------------|---------------------------------| | ⌘/Ctrl + K | Command palette | | n | New task | | / | Focus search | | t | Toggle theme | | ? | Toggle shortcut cheatsheet | | Esc | Close modal / overlay |

Live updates

Everything is over WebSocket. Changes from the TUI, CLI, an editor, an agent script, or another browser tab show up instantly. The web process is local — nothing leaves the machine.

REST API

If your IDE wants to talk to the running server directly:

GET    /api/config            Returns the resolved OrdnaConfig + agentHook info
GET    /api/tasks             All tasks
GET    /api/tasks/:id         One task
POST   /api/tasks             Create
PATCH  /api/tasks/:id         Update
POST   /api/tasks/:id/move    Change status (depends_on gate)
DELETE /api/tasks/:id         Delete
POST   /api/tasks/:id/agent   Forward to ORDNA_AGENT_HOOK_URL (501 if unset)
WS     /ws                    Broadcasts {added | changed | removed}

Bodies are JSON; Task shape comes from @frehilm/ordna-core.

Configuration

Inherits from @frehilm/ordna-core. The relevant key for this package is webPort (default 7420).

The agent hook is configured via env (ORDNA_AGENT_HOOK_URL, ORDNA_AGENT_HOOK_LABEL, ORDNA_AGENT_HOOK_HEADERS) or programmatically via the agentHook option on runWeb. The programmatic option wins. Pass null to disable explicitly.

License

MIT — see LICENSE.