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

signalk-hmi-designer

v0.1.0

Published

SignalK webapp that designs HMI layouts (JSON) for runtime-rendering display devices

Readme

signalk-hmi-designer

A SignalK webapp that designs HMI layouts for runtime-rendering display devices — boards that load a JSON layout at runtime and bind widgets to SignalK paths, without a firmware rebuild per change.

Reference target: sensesp-p4-cockpit's jlp JSON Layout Player on the ESP32-P4 / Waveshare 7B panel. Any device that implements the same GET /hello + POST /layout contract works.

What it is

A SignalK plugin you install on your SK server. From the SK admin UI, open the HMI Designer webapp. Workflow:

  1. Enter the device URL (or pick one from the discovered list — mDNS browse coming in v2).
  2. Connect — the designer GETs /hello to learn the device's widget catalog, display size, and currently-active layout.
  3. Drag widgets onto the canvas. Bind each to a SignalK path from the filtered list of live paths on this server.
  4. Push layout — POSTs the JSON to the device's /layout, which stages it offscreen, swaps atomically, and persists to LittleFS on success.

Device contract

The designer assumes the device exposes:

  • GET /hello → capability descriptor (schema version, widget catalog, display size).
  • POST /layout → applies a layout JSON. Returns {ok, name, screens, widgets} or {ok:false, err}.

Schema and widget kinds are documented in webapp/src/schema.ts.

Status

v0.1 — minimum useful designer:

  • Single screen (multi-screen tabs in v2).
  • Widget kinds: label, toggle, arc, bar, button.
  • Push-only persistence (no SignalK applicationData commit yet — that's v2).
  • No mDNS browse in the webapp yet — you enter the device URL by hand.

Develop

npm install
npm run dev          # vite, http://localhost:5173, proxies /signalk and /plugins to $SIGNALK_DEV_URL (default 127.0.0.1:3000)
npm run build:all    # lint + tsc + vite build + vitest

The plugin entry compiles to plugin/, the webapp to public/. Both are gitignored.