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

create-satin

v0.1.2

Published

Create a Satin iPhone Home Screen app.

Readme

create-satin

Create a Vite + React app for the iPhone Home Screen runtime.

After the beta is published:

npm create satin@latest -- my-app --yes --name "My App" --id my-app
# or
pnpm create satin@latest my-app --yes --name "My App" --id my-app

Run create-satin --help for all flags, including launch colours and a local Satin tarball override. The command copies a bundled template, refuses to overwrite a nonempty directory, and leaves installation to you. It has no runtime dependencies. Node 22.12+ on the 22.x line, or Node 24+, is required.

Quote destination paths containing spaces. The folder keeps its requested name; the npm package name and default app ID use a lowercase name with other characters replaced by hyphens and edge hyphens removed. An empty result uses my-app. For example, "My App #%?" creates that folder with package name my-app and ID my-app.

--icon copies one square PNG source; the build derives the install icon sizes. --accent writes appearance.tint; Satin applies the tint at runtime. Without it no tint is written and the app uses the system blue. Launch colours write the light/dark appearance backgrounds. If a bundled template cannot apply a flag, the command fails before creating the destination.

The template has Home and Settings tabs with independent navigation stacks, a saved-item detail route and a Your data route that exports JSON. It uses useQuery and useRecord for local data. It does not import data. Add validation, a preview, backup and confirmation before building an import flow.

The app includes README.md, AGENTS.md, IOS-DESIGN.md and GETTING-STARTED.md. The packaged API reference documents each export and its limitations.

Maintainers edit templates/basic/ in the repository. npm run build copies it into this package before packing, so the published CLI works outside the repo.

Set SATIN_DOCS_BASE_URL when building or packing the CLI to choose where the generated GETTING-STARTED.md links resolve. It is an HTTP(S) repository-root URL containing both docs/ and packages/; include the release revision for versioned source documentation. For example:

SATIN_DOCS_BASE_URL=https://docs.example.com/satin/v0.1.0-beta.0/ npm run build

The default uses the configured source repository at its default revision. Before publication, set the docs base URL to the chosen public repository and release revision. The build normalizes the trailing slash and rejects credentials, query strings, fragments and non-HTTP schemes. External service links and page anchors keep their original targets. This is a packaging option; app creators do not need to set it. Packaging checks every shipped template Markdown file, the generated guide and both package READMEs for private project-status language.

Upgrade an app

In the existing app directory, run npx create-satin@latest upgrade --dry-run, then npx create-satin@latest upgrade. Use an explicit generator version to choose a target release. The command pins existing Satin dependencies, refreshes only byte-identical generated guidance and tooling files, and reports modified files for manual review. App source, assets and entry HTML remain intact. It prints the release notes between the app's exact current kit pin and the target version. Run your package manager install afterwards to update the lockfile, then validate your app. No installer runs automatically.