CLI to scaffold a new Numbered Studio project — Next.js + Sanity or Shopify Liquid, with Figma grid config baked in. Creates the project locally and wires it up end-to-end: Sanity project, GitHub repo, Vercel deployment, env vars, and preview domain.
npx @numbered/create-bootstrap
# or
bunx @numbered/create-bootstrapRe-run it on an existing directory to resume setup — the CLI detects the project type and skips steps that are already done (Sanity project, GitHub repo, etc.).
Prompts:
- Project name — any string; internally slugified (e.g.
My Project→my-project) - Template — Next.js + Sanity or Shopify Liquid (skipped if existing project)
- Shopify ecommerce support — for
nextjsonly; removes ~100 ecommerce files when disabled (default: no) - Grid configuration — defaults to 24col desktop / 6col mobile
- Install dependencies — via bun
- Create Sanity project — creates remote project, injects all IDs/secrets into
.env.local, prompts forSANITY_API_TOKEN - Create GitHub repo — private repo under
Numbered-com, initial commit onmain, auto-push, then checkoutstagingbranch - Link Vercel project — under
numbered-sandboxscope, setsapps/webas root, pushes env vars to all environments (parallel), adds{slug}.numbered.studiopreview domain targetingstaging
Each step is idempotent and skippable — re-running only runs what's missing.
- bun
>=1.0 - git + access to the
Numbered-comGitHub org - gh (only for GitHub repo creation) — run
gh auth login - Vercel CLI ≥ v51 (auto-installed globally if missing)
- Sanity account — browser login on first run
Node.js >=22.
| Key | Label | Repo |
|---|---|---|
nextjs |
Next.js + Sanity | Numbered-com/bootstrap |
shopify |
Shopify Liquid | Numbered-com/jolie |
cd my-project
bun run devIf you skipped the Sanity step, copy .env.sample to .env.local and fill in the values manually.
From staging:
bun run release # patch (default)
bun run release:minor
bun run release:majorEach script bumps the version, commits, tags (v*), and pushes — the postversion hook auto-runs git push --follow-tags. The .github/workflows/publish.yml action picks up the tag and publishes to npm with provenance.
One-time setup: add an NPM_TOKEN repository secret (npm → Access Tokens → Automation token with publish rights to @numbered).