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

@habeetat/create-app

v0.3.16

Published

Scaffold a local app wired to a Habeetat platform (npm create @habeetat/app)

Readme

@habeetat/create-app

Scaffold a local app already wired to a Habeetat platform — no client ids, endpoints or resource indicators to copy by hand.

npm create @habeetat/app my-app

The command signs you in, asks which organization and which installed app you are building, and writes a working pnpm workspace whose .env files are filled in from what the platform actually reports.

What it does

  1. Discovers the platform. Reads the platform's public runtime config (Logto endpoint, API base, API resource) — nothing is hardcoded in the generated project.
  2. Signs you in. Browser-based OIDC with PKCE on a loopback callback. No client secret is involved and no credential is stored in the scaffolded project.
  3. Asks which organization. Only the ones you are a member of; the server does the filtering.
  4. Asks which app. Only scaffold-ready installed apps — those that already have an M2M credential and a Logto client. Apps that are installed but not ready are reported, with the reason, rather than silently hidden.
  5. Generates the project, pinning @habeetat/sdk-node / @habeetat/sdk-react to the version currently published on npm.

Generated layout

my-app/
  package.json            # pnpm workspace: dev, build, update:habeetat
  pnpm-workspace.yaml
  apps/backend/           # NestJS + @habeetat/sdk-node, .env pre-filled
  apps/frontend/          # Vite + React + @habeetat/sdk-react, .env pre-filled

Everything the app needs to talk to the platform is already in the two .env files, with one deliberate exception (see below). A matching .env.example is written next to each.

The one thing it cannot fill in

HABEETAT_M2M_CLIENT_SECRET in apps/backend/.env is left as a placeholder. The M2M secret is shown once, to the org manager, at the moment the app is installed — the platform does not store it in a readable form and no API can hand it back. Ask your org manager for it and paste it in before pnpm dev; if it has been lost, it can be rotated from the Platform Manager.

Options

Usage: create-app [dir] [options]

Arguments:
  dir                     target directory (prompted if omitted)

Options:
  --platform <url>        platform base URL          (env: HABEETAT_PLATFORM_URL)
  --cli-client-id <id>    "Habeetat CLI" OIDC client (env: HABEETAT_CLI_CLIENT_ID)
  --webhooks              also scaffold an inbound webhook receiver
  -h, --help              display help

Point --platform at your own installation to scaffold against it:

npm create @habeetat/app my-app -- --platform https://api.acme.example.com

Requirements

  • Node.js >= 18
  • Membership of an organization on the target platform, with the app already installed by an org manager

Related

License

MIT