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-addi-app

v4.0.0

Published

Scaffolds an `addi-app` project.

Readme

create-addi-app

Scaffolds an addi-app: a SvelteKit project that deploys to Cloudflare Workers, styled with Tailwind CSS v4 and shadcn-svelte, with optional Drizzle ORM on D1, Better Auth, and a couple of utility libraries (runed, neverthrow).

Usage

npm create addi-app
# or: pnpm create addi-app / yarn create addi-app / bun create addi-app

Pass a name and flags to skip the prompts:

npm create addi-app my-app -- --database --auth --useful

| Flag | Effect | | ------------------------------ | ------------------------------------------ | | --database / --no-database | Drizzle ORM on Cloudflare D1 | | --auth / --no-auth | Better Auth (requires the database) | | --useful / --no-useful | runed + neverthrow | | --debug | Print output from every underlying command | | --help, -h | Usage |

Anything you don't specify gets asked interactively. Unknown flags are an error, not a shrug.

Requires Node 20.19 or newer. The CLI detects whichever package manager invoked it and uses that for the generated app.

What you get

The generated app is a SvelteKit minimal template (TypeScript) wired to @sveltejs/adapter-cloudflare with a Workers-target wrangler.jsonc, plus:

  • Tailwind CSS v4 with the typography plugin
  • shadcn-svelte set up with the amethyst-haze theme; button, button-group, card, and separator are preinstalled
  • ESLint and Prettier configured and passing out of the box
  • With --database: Drizzle ORM against a D1 binding named D1, migrations included in the workflow below
  • With --auth: Better Auth backed by that database, session handling already in hooks.server.ts

Dependency versions resolve when you scaffold, not when this package was published, so a fresh app starts on current releases.

my-app/
├── src/
│   ├── lib/
│   │   ├── components/ui/    shadcn-svelte components
│   │   └── server/           db/ and auth.ts, when enabled
│   ├── routes/
│   ├── hooks.server.ts
│   └── app.d.ts
├── vite.config.ts             SvelteKit + adapter config lives here
├── wrangler.jsonc
├── drizzle.config.ts          only with --database
└── worker-configuration.d.ts  generated by `wrangler types`

Working in the generated app

npm run dev          # vite dev server
npm run check        # svelte-check
npm run lint         # prettier + eslint
npm run preview      # build, then wrangler dev

With the database enabled, db:gen generates migrations (running Better Auth schema generation first if auth is on), and db:migrate applies them locally. db:migrate:preview and db:migrate:remote target Cloudflare.

To deploy, create the database and give wrangler its id:

wrangler d1 create my-app    # add the printed database_id to wrangler.jsonc
npm run db:migrate:remote
npm run cf:deploy

Skip the D1 steps if you scaffolded without a database; cf:deploy alone is enough.

How it works

Instead of shelling out to create-cloudflare@latest and friends, this CLI calls the Svelte CLI's programmatic API directly: create() for the base project, add() for the tailwindcss, eslint, prettier, and Cloudflare adapter add-ons. shadcn-svelte runs from the generated app's own dependencies rather than a @latest download, and the remaining project files come from templates in this repo. Version ranges are deliberate everywhere, so a release of some upstream tool can't break scaffolding overnight.

Developing this repo

pnpm install
pnpm test    # scaffolds test-app/ (gitignored) with everything enabled

Delete test-app/ before rerunning. Contributions welcome.

License

MIT