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

@snabbsajt/site-kit

v0.2.0

Published

Build, validate, and pack editable SnabbSajt site packages.

Readme

SnabbSajt Site Kit

Build a website in Next.js, React, plain HTML, or any other tool, then convert its content into a structured package that stays editable inside SnabbSajt.

Site Kit is intentionally not a code importer. It does not execute your React, CSS, JavaScript, or HTML inside SnabbSajt. You map the finished site to SnabbSajt's typed sections, validate it locally, and pack it as a safe bundle.

Status

0.2 is ready for its first npm beta release. The package format, validator, HTML/WordPress converters, CLI, skills, and bundle format match the production SnabbSajt importer. The packages are not public until the owner completes the two-step npm release in docs/publishing.md.

Install from GitHub before the npm release

npm install github:HH-Studio/Sajtbuilder-SDK#main

Or clone the repository and use Bun:

git clone https://github.com/HH-Studio/Sajtbuilder-SDK.git
cd Sajtbuilder-SDK
bun install
bun run build

Quickstart

npx site-kit init ./my-site --template nextjs
npx site-kit validate ./my-site
npx site-kit pack ./my-site -o my-site.zip

Import my-site.zip in SnabbSajt under Settings > Backup & move. The import creates a new unpublished draft. It never overwrites or publishes a site.

No API key is needed. Every command runs locally.

To convert rendered HTML with the newer namespaced CLI:

npx @snabbsajt/[email protected] site import html https://example.com -o ./example-import
snabbsajt site import html https://example.com -o ./example-import
snabbsajt site import approve ./example-import --yes
snabbsajt site pack ./example-import -o example.zip

Always read import-report.md before approval. Unsupported behavior is reported and stays inert; blocked content loss cannot be approved.

WordPress requires the current public site plus a WXR/XML export:

snabbsajt site import wordpress --url https://example.com --wxr export.xml --out ./converted

Typed authoring

import { DEFAULT_THEME, defineSite } from "@snabbsajt/site-kit";

export const site = defineSite({
  format: "sajt-site",
  version: 1,
  exportedAt: new Date().toISOString(),
  site: {
    businessName: "North Studio",
    vertical: "consultant",
    goal: "show_services",
    language: "en",
    theme: DEFAULT_THEME,
    contact: { email: "[email protected]" },
  },
  folders: [],
  pages: [{ tmpId: "home", slug: "", title: "Home", order: 0, showInNav: true }],
  sections: [{
    pageTmpId: "home",
    type: "hero",
    variant: "image-right",
    order: "a0",
    content: { type: "hero", headline: "A useful headline" },
  }],
  fonts: [],
  assets: [],
});

defineSite() ties each section's outer type to its discriminated content type and rejects unknown object-literal fields in TypeScript. site-kit validate then runs the same runtime validators and caps used by the production importer.

Documentation

What Site Kit will not do

  • Pixel-clone an arbitrary website.
  • Run third-party JavaScript, tracking snippets, iframes, or React components.
  • Preserve custom CSS frameworks.
  • Publish without a human review.
  • Invent missing business facts or copy.

Those limits are the point. Imported sites stay safe, responsive, accessible, and editable through SnabbSajt's normal section renderer.

Contributing

Run the full local gate before opening a change:

bun run check

Report schema drift or importer mismatches as a GitHub issue with a minimal site.json. Do not include customer secrets or personal data.