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

@craveup/cli

v1.3.0

Published

Crave Up CLI — bootstrap storefronts, sign in, and connect integrations

Readme

Crave Up CLI

The Crave Up command line interface bootstraps production-ready storefronts in minutes. It scaffolds one of our open-source templates, wires credentials, installs dependencies, and can launch the dev server for you.


Quick start

npx @craveup/cli init

The CLI publishes as @craveup/cli. The older unscoped craveup package on npm is unmaintained and stops at 1.0.3 — install the scoped name. The installed command is still craveup, so craveup login, craveup apps status, and friends are unchanged.

Follow the prompts to:

  1. Choose a template. storefront-default is the recommended starter for most restaurants.
  2. Sign in or create a free Crave Up account in the secure browser window.
  3. Select an existing restaurant, or create a lightweight development restaurant when the account is new.
  4. Let the CLI create the project key, clone the template, write .env.local, and install dependencies.
  5. Develop locally. Subscription, business verification, and live payments wait until go-live onboarding.

Tip: rerun the command with --skip-install if you prefer to manage dependencies manually.


Command reference

| Command | Description | | ------------------------------------ | ------------------------------------------------------------- | | craveup init | Interactive storefront scaffolding | | craveup login [--device] | Sign in or sign up (browser OAuth; stored in keychain) | | craveup logout | Sign out and remove local credentials | | craveup whoami | Show the signed-in account | | craveup integrations list | Show Stripe/Square integration status for the current project | | craveup integrations add stripe | Connect Stripe payments | | craveup integrations add square | Connect Square POS | | craveup apps doctor | Check Expo/EAS release readiness | | craveup apps configure | Create manual internal-release EAS workflows | | craveup apps publish testflight | Build and submit iOS to internal TestFlight | | craveup apps publish play-internal | Build and submit Android to Google Play internal testing | | craveup apps status | Show recent EAS builds and the submission dashboard |

Flags

| Flag | Description | | -------------------- | ----------------------------------------------------------------------------------- | | --template <id> | Pre-select a template (storefront-default, tomodachi-sushi, xichuan-noodles). | | --dir <path> | Target directory for the generated project. | | --api-key <key> | Inject the API key non-interactively. | | --location-id <id> | Inject the location ID used for menu, cart, checkout, and integration checks. | | --org-slug <slug> | Inject the organization slug for organization templates. | | --skip-install | Skip dependency installation (the CLI prints the command you need to run). | | --skip-dev | Skip launching the local dev server after a successful init. | | --skip-validate | Skip the API key/location smoke check. | | --force | Overwrite an empty directory without prompting; handy for scripted runs. |

Combine flags for CI/CD usage:

npx @craveup/cli init \
  --template storefront-default \
  --dir my-storefront \
  --api-key "$NEXT_PUBLIC_CRAVEUP_API_KEY" \
  --location-id "$NEXT_PUBLIC_LOCATION_ID" \
  --org-slug "$NEXT_PUBLIC_ORG_SLUG" \
  --skip-install

Mobile app releases

The mobile release commands are Expo/EAS-first and intentionally start with internal testing. EAS builds consume plan minutes and require the corresponding paid Apple Developer or Google Play account.

# Run from an Expo or React Native project root
npx @craveup/cli apps doctor --platform ios
npx @craveup/cli apps configure

# Interactive Apple login/2FA stays in this visible terminal
npx @craveup/cli apps publish testflight

# Requires submit.production.android.track="internal" in eas.json
npx @craveup/cli apps publish play-internal

npx @craveup/cli apps status

Use --project-dir <path> when the app is elsewhere. --yes skips only the Crave Up paid-build confirmation; EAS can still request credentials or configuration. apps configure refuses to overwrite its two workflow files unless --force is supplied.

The generated workflows are manual-only and target internal TestFlight or Google Play internal testing. Commit them before an agent dispatches them through @craveup/mcp.

Crave Up never stores an Apple password or 2FA code. For MCP/CI automation, configure a scoped Expo robot-user EXPO_TOKEN; keep App Store Connect and Google service-account credentials in EAS. An iOS upload becomes a TestFlight build, not a public App Store release. Test the build, complete App Store metadata and compliance, and submit it for App Review in App Store Connect.


Environment variables

The CLI communicates with Crave Up partner services and writes initial environment values into the generated storefront.

| Variable | Default | Purpose | | --- | --- | --- | | CRAVEUP_ENVIRONMENT | production | Select the atomic sandbox or production dashboard, API, Clerk, and credential profile. MCP callers must set this explicitly. | | CRAVEUP_DASHBOARD_URL | From profile | Optional custom dashboard override; must match the selected environment. | | CRAVEUP_API_BASE_URL | From profile | Optional custom API override; must match the selected environment. | | CRAVEUP_PARTNER_API_URL | From profile | Optional custom partner API override; must match the selected environment. | | CRAVEUP_OAUTH_ISSUER | From profile | Optional custom Clerk issuer; must match the selected environment. | | CRAVEUP_ALLOW_CUSTOM_ENDPOINTS | false | Permit an intentional unrecognized custom deployment. Never use this to cross sandbox/production. |

craveup whoami prints the active environment and resolved hosts. Sandbox and production sessions use separate keychain accounts (or separate fallback credential files), so switching environments cannot silently reuse the other environment's session.

Generated storefronts receive a minimal .env.local:

  • Always: NEXT_PUBLIC_CRAVEUP_API_KEY, NEXT_PUBLIC_LOCATION_ID, and NEXT_PUBLIC_GOOGLE_MAPS_API_KEY (blank placeholder).
  • Organization templates: also add NEXT_PUBLIC_ORG_SLUG.

Update the placeholder values before starting the dev server.


Template catalogue

Template metadata lives in src/templates.ts. Each entry defines:

  • Template identifier (storefront-default, tomodachi-sushi, xichuan-noodles).
  • Git repository URL (can point to local/private forks).
  • Scope (single-location or organization) along with the credentials collected by the wizard.

| Template | Scope | Credentials collected | | -------------------- | --------------- | -------------------------------------------------------------------------------- | | tomodachi-sushi | Single location | NEXT_PUBLIC_CRAVEUP_API_KEY, NEXT_PUBLIC_LOCATION_ID | | xichuan-noodles | Single location | NEXT_PUBLIC_CRAVEUP_API_KEY, NEXT_PUBLIC_LOCATION_ID | | storefront-default | Organization | NEXT_PUBLIC_CRAVEUP_API_KEY, NEXT_PUBLIC_LOCATION_ID, NEXT_PUBLIC_ORG_SLUG |

To add your own template, update src/templates.ts and publish a compatible Git repository.


Local development

pnpm install
pnpm --filter @craveup/cli build
  • The compiled CLI binary is emitted to dist/cli.js.
  • Run pnpm --filter @craveup/cli dev for watch-mode rebuilds.
  • Execute the local build with node dist/cli.js init.

Troubleshooting

| Symptom | Fix | | ---------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | | CLI exits with Cannot read property 'trim' of undefined. | Ensure NEXT_PUBLIC_CRAVEUP_API_KEY is supplied either interactively or via --api-key. | | Generated project fails to fetch data. | Verify .env.local contains a valid API key and restart pnpm dev (Next.js reads env vars at boot). | | Template install fails due to Git access. | Confirm you can clone the template repo directly. Private templates require authenticated URLs. |

Need help? Open an issue in the monorepo or join the Crave Up developer community.