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

@single-studio/core

v0.2.0

Published

Local-first broadcast graphics framework for OBS: replicated state, source graphics, and control surfaces.

Readme

@single-studio/core

Local-first broadcast graphics for OBS. Build scoreboards, lower thirds and tickers as React components, drive them from an operator's board running as an OBS dock, and deploy the whole thing as static files.

No server, no backend, and the graphics keep working when the network does not.

Part of Single Studio.

Start a studio

Don't start here. Start from the template, which is this package already wired to a control surface, a graphic, a SharedWorker and a GitHub Pages deploy — the parts that are fiddly to assemble and boring to assemble twice.

pnpm add @single-studio/core react react-dom react-router-dom

What it is

Two halves sharing one store, and two entry points to match — a graphic imports from /source, the operator's board from /control. Nothing needs both, which is what lets each side name things for what they are.

// A graphic. One browser source per file.
import { Scene, Variable } from '@single-studio/core/source'

export default function Scoreboard() {
  return (
    <Scene>
      <Variable name="home.name" fallback="Home" />
      <Variable name="home.score" fallback="0" />
    </Scene>
  )
}
// The operator's board, in an OBS custom browser dock.
import { Field, Panel, Stepper } from '@single-studio/core/control'

export default function Control() {
  return (
    <Panel title="Scores">
      <Field name="home.name" label="Home" />
      <Stepper name="home.score" label="Home score" />
    </Panel>
  )
}

State lives in a SharedWorker shared by the dock and every source, persisted to IndexedDB, and fanned out per path — so a lower third is never re-rendered by the shot clock. Nothing polls, nothing round-trips a server, and a graphic that has just been shown paints its real values rather than a flash of placeholder text.

Collaboration

Optional and off until somebody pastes a link. Add @single-studio/provider-supabase and other people can drive the show from their own machines, over a project you own, end-to-end encrypted with a key that never reaches the service carrying it.

Documentation

Peer dependencies

React 18+, React DOM, and React Router 6.22+. Browsers need module SharedWorker support — Chromium 114+, which is what OBS embeds.

Licence

MIT