{"_id":"@carloscasteher/create-bb-app","_rev":"5-096d09fdd159afdd84aee030ab97006e","name":"@carloscasteher/create-bb-app","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.0":{"name":"@carloscasteher/create-bb-app","version":"0.1.0","keywords":["nestjs","scaffolding","boilerplate","create-bb-app","hexagonal"],"author":{"name":"carloscasteher"},"license":"MIT","_id":"@carloscasteher/create-bb-app@0.1.0","maintainers":[{"name":"carloscasteher","email":"ccastellanoherrera@gmail.com"}],"bin":{"create-bb-app":"dist/cli.js"},"dist":{"shasum":"b72ddaea92034a3359dd72fddd8d62fa8e433051","tarball":"https://registry.npmjs.org/@carloscasteher/create-bb-app/-/create-bb-app-0.1.0.tgz","fileCount":143,"integrity":"sha512-LG+lugcKMV9ZKT5rlC/6YhqPWjuGVDusjefnkMnWht1aym919X9wpQz5/m29u7Y6BES7rwL+K8sV6rfFJBRu7w==","signatures":[{"sig":"MEUCIF+UGRq7s/gKLY/JvKkA4XBKubSt7MG9sr76dQ+sIp3EAiEA9IbWXf4VPDgRAUSXNPtn1KRLz23JccHt+S043/g7WYA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":107762},"type":"module","engines":{"node":">=24"},"gitHead":"439f94474f621f20fb4dd773eefa50488c241e7d","scripts":{"dev":"tsx src/cli.ts","build":"tsc","start":"node dist/cli.js","precommit":"pnpm typecheck","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"carloscasteher","email":"ccastellanoherrera@gmail.com"},"_npmVersion":"11.6.1","description":"Scaffold a NestJS hexagonal backend from the backend-boiler template","directories":{},"_nodeVersion":"24.11.0","dependencies":{"execa":"^10.0.0","fs-extra":"^11.4.0","commander":"^15.0.0","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"tsx":"^4.23.1","typescript":"^5.7.3","@types/node":"^24.13.3","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/create-bb-app_0.1.0_1785435832986_0.5677241203989019","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@carloscasteher/create-bb-app","version":"0.1.2","keywords":["nestjs","scaffolding","boilerplate","create-bb-app","hexagonal"],"author":{"name":"carloscasteher"},"license":"MIT","_id":"@carloscasteher/create-bb-app@0.1.2","maintainers":[{"name":"carloscasteher","email":"ccastellanoherrera@gmail.com"}],"bin":{"create-bb-app":"dist/cli.js"},"dist":{"shasum":"142bf227dc094e80be679dbb1d0911778f2107c9","tarball":"https://registry.npmjs.org/@carloscasteher/create-bb-app/-/create-bb-app-0.1.2.tgz","fileCount":145,"integrity":"sha512-GvRZ2zFEQGz0lKz91hxHOEk9d4326dlIJ4WhEPLB3sFPMMpkie5r+qofQa7VG+mOEabwtJpt1XfiqFyCSHQPAA==","signatures":[{"sig":"MEQCIGTyXcUhEZT/xoXqqo1sivQaD7C7jUU8NOeZeAF0jlMCAiANQQaqMSvGgDpSpDT7n/xS1ZVOGoBS99veXn108OrVfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109891},"type":"module","engines":{"node":">=24"},"gitHead":"e76dafeeb544936a26d2bccdf7ae59fa19919c70","scripts":{"dev":"tsx src/cli.ts","build":"tsc","start":"node dist/cli.js","precommit":"pnpm typecheck","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"carloscasteher","email":"ccastellanoherrera@gmail.com"},"_npmVersion":"11.6.1","description":"Scaffold a NestJS hexagonal backend from the backend-boiler template","directories":{},"_nodeVersion":"24.11.0","dependencies":{"execa":"^10.0.0","fs-extra":"^11.4.0","commander":"^15.0.0","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"tsx":"^4.23.1","typescript":"^5.7.3","@types/node":"^24.13.3","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/create-bb-app_0.1.2_1785437019465_0.23851648605156006","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@carloscasteher/create-bb-app","version":"0.1.3","keywords":["nestjs","scaffolding","boilerplate","create-bb-app","hexagonal"],"author":{"name":"carloscasteher"},"license":"MIT","_id":"@carloscasteher/create-bb-app@0.1.3","maintainers":[{"name":"carloscasteher","email":"ccastellanoherrera@gmail.com"}],"bin":{"create-bb-app":"dist/cli.js"},"dist":{"shasum":"d321bf8808384b72c935b09ebc454a077c780d90","tarball":"https://registry.npmjs.org/@carloscasteher/create-bb-app/-/create-bb-app-0.1.3.tgz","fileCount":145,"integrity":"sha512-rjUXBClUUZrx5q+B1pL3Ms1gBUn6hwqN6SBUfgOyQFF4WdXK2096i38X3HHfx7JIqvp2AUN1bPOzOG5tZ4rE3w==","signatures":[{"sig":"MEUCIQCPsNq57y7TsV6b32Th71JnIbmqtxNgPSptp8tN25XezwIgBPTlu5+aM0gWNxkff+DKFcQV0s1pEMLyr1+7JUGAGV8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109891},"type":"module","engines":{"node":">=24"},"gitHead":"caa88560d896259cd9259837f9d29166e9d69ca2","scripts":{"dev":"tsx src/cli.ts","build":"tsc","start":"node dist/cli.js","precommit":"pnpm typecheck","typecheck":"tsc --noEmit","prepublishOnly":"pnpm build"},"_npmUser":{"name":"carloscasteher","email":"ccastellanoherrera@gmail.com"},"_npmVersion":"11.6.1","description":"Scaffold a NestJS hexagonal backend from the backend-boiler template","directories":{},"_nodeVersion":"24.11.0","dependencies":{"execa":"^10.0.0","fs-extra":"^11.4.0","commander":"^15.0.0","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"tsx":"^4.23.1","typescript":"^5.7.3","@types/node":"^24.13.3","@types/fs-extra":"^11.0.4"},"_npmOperationalInternal":{"tmp":"tmp/create-bb-app_0.1.3_1785438851513_0.9519590206511208","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@carloscasteher/create-bb-app","version":"0.1.4","keywords":["nestjs","scaffolding","boilerplate","create-bb-app","hexagonal","clean-architecture","typescript","cli","generator","starter"],"author":{"url":"https://github.com/carloscasteher","name":"carloscasteher"},"license":"MIT","_id":"@carloscasteher/create-bb-app@0.1.4","maintainers":[{"name":"carloscasteher","email":"ccastellanoherrera@gmail.com"}],"homepage":"https://carloscasteher.github.io/backend-boiler-cli/","bugs":{"url":"https://github.com/carloscasteher/backend-boiler-cli/issues"},"bin":{"create-bb-app":"dist/cli.js"},"dist":{"shasum":"6769e6979465ccc936798ecc14f5453adf13e3c5","tarball":"https://registry.npmjs.org/@carloscasteher/create-bb-app/-/create-bb-app-0.1.4.tgz","fileCount":246,"integrity":"sha512-I6Ua7r2OCLW4LeOUQlHj/f1KVuukD1V4mR+EW5Slelohjz1YxV3WABUYbS22e8KGazrOa1XL/QLbPBYLmzcsfA==","signatures":[{"sig":"MEQCIEG+Ko+C9zsydR5aYkDlO6oMEBiK6rXBnx9M9sR7tSbeAiAC74c1+uGnRb3xqwxK8tg2giHLlJUkXMe6shFXf5/7Zg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@carloscasteher%2fcreate-bb-app@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":693970},"type":"module","_from":"file:carloscasteher-create-bb-app-0.1.4.tgz","engines":{"node":">=24"},"scripts":{"dev":"tsx src/cli.ts","lint":"eslint . --fix","test":"vitest run","build":"pnpm clean && tsc -p tsconfig.build.json","check":"pnpm lint:check && pnpm format:check && pnpm typecheck && pnpm test","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","start":"node dist/cli.js","format":"prettier --write .","docs:dev":"vitepress dev docs","changeset":"changeset","typecheck":"tsc --noEmit","deps:check":"tsx scripts/checkDependencyVersions.ts","docs:build":"vitepress build docs","lint:check":"eslint .","pack:check":"npm pack --dry-run","test:smoke":"pnpm build && vitest run --config vitest.smoke.config.ts","test:watch":"vitest","docs:preview":"vitepress preview docs","format:check":"prettier --check .","changeset:publish":"changeset publish","changeset:version":"changeset version"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:721f1e00-bee6-401d-bc7b-a1ef1ca5a27b"}},"_resolved":"/tmp/705654c0e9924bc6f4f4fd6128e79b93/carloscasteher-create-bb-app-0.1.4.tgz","_integrity":"sha512-I6Ua7r2OCLW4LeOUQlHj/f1KVuukD1V4mR+EW5Slelohjz1YxV3WABUYbS22e8KGazrOa1XL/QLbPBYLmzcsfA==","repository":{"url":"git+https://github.com/carloscasteher/backend-boiler-cli.git","type":"git"},"_npmVersion":"11.19.0","description":"Scaffold a NestJS hexagonal backend from the backend-boiler template","directories":{},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md,mjs,yml}":"prettier --write"},"_nodeVersion":"24.18.0","dependencies":{"execa":"^10.0.0","prettier":"^3.9.6","commander":"^15.0.0","@clack/prompts":"^1.7.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.1","husky":"^9.1.7","eslint":"^10.8.1","vitest":"^4.1.10","globals":"^17.9.0","vitepress":"^1.6.4","@eslint/js":"^10.0.1","typescript":"^5.7.3","@types/node":"^24.13.3","lint-staged":"^17.3.0","@changesets/cli":"^3.0.0","@commitlint/cli":"^21.2.1","typescript-eslint":"^8.67.0","eslint-config-prettier":"^10.1.8","@changesets/changelog-git":"^1.0.0","@commitlint/config-conventional":"^21.2.0"},"_npmOperationalInternal":{"tmp":"tmp/create-bb-app_0.1.4_1786482095246_0.6111833804279199","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@carloscasteher/create-bb-app","version":"0.1.5","description":"Scaffold a NestJS hexagonal backend from the backend-boiler template","type":"module","bin":{"create-bb-app":"dist/cli.js"},"lint-staged":{"*.ts":["eslint --fix","prettier --write"],"*.{json,md,mjs,yml}":"prettier --write"},"keywords":["nestjs","scaffolding","boilerplate","create-bb-app","hexagonal","clean-architecture","typescript","cli","generator","starter"],"author":{"name":"carloscasteher","url":"https://github.com/carloscasteher"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/carloscasteher/backend-boiler-cli.git"},"bugs":{"url":"https://github.com/carloscasteher/backend-boiler-cli/issues"},"homepage":"https://carloscasteher.github.io/backend-boiler-cli/","publishConfig":{"access":"public"},"engines":{"node":">=24"},"dependencies":{"@clack/prompts":"^1.7.0","commander":"^15.0.0","execa":"^10.0.0","prettier":"^3.9.6"},"devDependencies":{"@changesets/changelog-git":"^1.0.0","@changesets/cli":"^3.0.0","@commitlint/cli":"^21.2.1","@commitlint/config-conventional":"^21.2.0","@eslint/js":"^10.0.1","@types/node":"^24.13.3","eslint":"^10.8.1","eslint-config-prettier":"^10.1.8","globals":"^17.9.0","husky":"^9.1.7","lint-staged":"^17.3.0","tsx":"^4.23.1","typescript":"^5.7.3","typescript-eslint":"^8.67.0","vitepress":"^1.6.4","vitest":"^4.1.10"},"scripts":{"build":"pnpm clean && tsc -p tsconfig.build.json","clean":"node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"","dev":"tsx src/cli.ts","start":"node dist/cli.js","lint":"eslint . --fix","lint:check":"eslint .","format":"prettier --write .","format:check":"prettier --check .","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","test:smoke":"pnpm build && vitest run --config vitest.smoke.config.ts","check":"pnpm lint:check && pnpm format:check && pnpm typecheck && pnpm test","deps:check":"tsx scripts/checkDependencyVersions.ts","changeset":"changeset","changeset:version":"changeset version","changeset:publish":"changeset publish","pack:check":"npm pack --dry-run","docs:dev":"vitepress dev docs","docs:build":"vitepress build docs","docs:preview":"vitepress preview docs"},"_id":"@carloscasteher/create-bb-app@0.1.5","_integrity":"sha512-bFfT9ZlrHkSYN3wXMAZ05pPdq/FjUDJc7qfyh2LUL6M4SjdHQSjfivNoPI4klZgzpmBNLg2PIt9O9FnrhY9X6g==","_resolved":"/tmp/5b0450f9a97ea79908046d62edeed948/carloscasteher-create-bb-app-0.1.5.tgz","_from":"file:carloscasteher-create-bb-app-0.1.5.tgz","_nodeVersion":"24.19.0","_npmVersion":"11.19.0","dist":{"integrity":"sha512-bFfT9ZlrHkSYN3wXMAZ05pPdq/FjUDJc7qfyh2LUL6M4SjdHQSjfivNoPI4klZgzpmBNLg2PIt9O9FnrhY9X6g==","shasum":"e25a3dd0a265e1a156f7e4bd92dd314ca1df05e9","tarball":"https://registry.npmjs.org/@carloscasteher/create-bb-app/-/create-bb-app-0.1.5.tgz","fileCount":245,"unpackedSize":697831,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@carloscasteher%2fcreate-bb-app@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQChNnJI82rE6d8WORTamF6xmwYY76l1ui7jhVrpw4iWZgIgOSaqSMvUFuJBdPhXFr0gIfWPPeVcDKieHcLHkz8mSjE="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:721f1e00-bee6-401d-bc7b-a1ef1ca5a27b"}},"directories":{},"maintainers":[{"name":"carloscasteher","email":"ccastellanoherrera@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/create-bb-app_0.1.5_1786552812751_0.4459421413053779"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-30T18:23:51.624Z","modified":"2026-08-12T16:40:13.281Z","0.1.0":"2026-07-30T18:23:53.138Z","0.1.2":"2026-07-30T18:43:39.628Z","0.1.3":"2026-07-30T19:14:11.713Z","0.1.4":"2026-08-11T21:01:35.400Z","0.1.5":"2026-08-12T16:40:12.968Z"},"bugs":{"url":"https://github.com/carloscasteher/backend-boiler-cli/issues"},"author":{"name":"carloscasteher","url":"https://github.com/carloscasteher"},"license":"MIT","homepage":"https://carloscasteher.github.io/backend-boiler-cli/","keywords":["nestjs","scaffolding","boilerplate","create-bb-app","hexagonal","clean-architecture","typescript","cli","generator","starter"],"repository":{"type":"git","url":"git+https://github.com/carloscasteher/backend-boiler-cli.git"},"description":"Scaffold a NestJS hexagonal backend from the backend-boiler template","maintainers":[{"name":"carloscasteher","email":"ccastellanoherrera@gmail.com"}],"readme":"# create-bb-app\n\n[![npm](https://img.shields.io/npm/v/@carloscasteher/create-bb-app)](https://www.npmjs.com/package/@carloscasteher/create-bb-app)\n[![CI](https://github.com/carloscasteher/backend-boiler-cli/actions/workflows/ci.yml/badge.svg)](https://github.com/carloscasteher/backend-boiler-cli/actions/workflows/ci.yml)\n[![license](https://img.shields.io/npm/l/@carloscasteher/create-bb-app)](./LICENSE)\n\nScaffold a production-shaped **NestJS backend with hexagonal architecture**: pure domain, use cases, ports and adapters, a `users` slice you can copy from, health checks, Docker, migrations and tests already wired.\n\n**Documentation:** [carloscasteher.github.io/backend-boiler-cli](https://carloscasteher.github.io/backend-boiler-cli/)\n\n```bash\nnpx @carloscasteher/create-bb-app my-api\n```\n\nThe generated project passes its own `typecheck`, `lint`, `format:check`, `test` and `test:e2e` before you write a single line.\n\n## What you get\n\n- **Hexagonal layering** — `domain/` (no framework imports), `application/` use cases, `infrastructure/` adapters, wired per feature module.\n- **A database, your choice** — PostgreSQL with TypeORM (migrations and seeds included) or MongoDB with Mongoose.\n- **In-memory adapters for tests** — every repository has an in-memory twin, so unit and e2e tests run with no database and no Docker.\n- **Domain events (optional)** — an `EventBus` port with a Nest `EventEmitter` adapter and an in-memory one for tests.\n- **Health checks** — liveness plus per-adapter readiness checks for the database and the event bus.\n- **The boring parts, done** — Docker Compose, `.env` handling with validated config, ESLint, Prettier, Vitest, husky and commitlint.\n- **AI tooling (optional)** — `AGENTS.md`, agent skills and editor rules, or a clean project without them.\n\n## Usage\n\nRun it with your favourite runner; the wizard asks for anything you do not pass as a flag.\n\n```bash\nnpx @carloscasteher/create-bb-app          # npm\npnpm dlx @carloscasteher/create-bb-app     # pnpm\n```\n\nScaffold into the current directory with `.`:\n\n```bash\nmkdir my-api && cd my-api\nnpx @carloscasteher/create-bb-app .\n```\n\nNon-interactive, for scripts and CI:\n\n```bash\nnpx @carloscasteher/create-bb-app my-api --database=postgres --events --agents-skills --yes\n```\n\n### Flags\n\n| Flag                           | Description                                                           |\n| ------------------------------ | --------------------------------------------------------------------- |\n| `[project-name]`               | Target directory and package name, kebab-case. `.` scaffolds in place |\n| `--database <postgres\\|mongo>` | Persistence adapter; the two are mutually exclusive                   |\n| `--events` / `--no-events`     | Include or skip the domain events installer                           |\n| `--agents` / `--no-agents`     | Include or skip all AI tooling (skills, Cursor, Serena)               |\n| `--agents-skills`              | Include `.agents`, `AGENTS.md` and `skills-lock.json`                 |\n| `--agents-cursor`              | Include `.cursor`                                                     |\n| `--agents-serena`              | Include `.serena`                                                     |\n| `--skip-install`               | Do not run `pnpm install` after scaffolding                           |\n| `--yes`                        | Accept defaults for everything not passed as a flag                   |\n| `-v, --version`                | Print the CLI version                                                 |\n\nAI tooling is **opt-in**: with `--yes` and no `--agents*` flags, none of those files are copied. Git is always initialized (`git init` on `main`) without an initial commit.\n\n## After scaffolding\n\n```bash\ncd my-api\npnpm docker:up          # start postgres or mongo\npnpm migration:run      # postgres only\npnpm start:dev\n```\n\nTests need neither of those: `pnpm test` and `pnpm test:e2e` run against in-memory adapters.\n\n## Requirements\n\n- Node.js 24 or newer, both to run the CLI and for the projects it generates\n- pnpm for the generated project — enable it with `corepack enable pnpm`\n- Docker only if you want a real database locally\n\n## How it works\n\nThe CLI copies `template/base` and then applies **installers**: self-contained feature overlays under `template/extras/<id>/` that contribute files, dependencies, scripts and environment variables. The root `ApiModule` and `HealthCheckModule` are composed from the chosen set and formatted with the generated project's own Prettier config.\n\n```text\nsrc/\n├── cli.ts                  # argument parsing and orchestration\n├── prompts.ts              # interactive wizard and input validation\n├── installers/             # postgres, mongo, events + shared dependency versions\n└── helpers/                # copy, merge, compose, format\ntemplate/\n├── base/                   # Nest skeleton, shared kernel, liveness health check\n└── extras/\n    ├── postgres/           # TypeORM, users repository, docker, migrations\n    ├── mongo/              # Mongoose, users repository, docker\n    └── events/             # Domain event primitives, EventBus adapters, demo health check\n```\n\nAdding a feature means adding an installer: drop the files in `template/extras/<id>/`, declare what it merges into `package.json`, and the wizard does the rest.\n\n## Roadmap\n\nObservability installers following the same pattern: structured logging with [Pino](https://github.com/pinojs/pino), [Prometheus](https://prometheus.io/) metrics with a dockerized [Grafana](https://grafana.com/) dashboard, and distributed tracing with [OpenTelemetry](https://opentelemetry.io/).\n\n## Documentation site\n\nDetailed docs (architecture, domain events, errors, AI workflow) live under `docs/` and deploy to GitHub Pages on push to `main`:\n\n```bash\npnpm docs:dev               # local preview\npnpm docs:build             # static site → docs/.vitepress/dist\n```\n\n## Changelog\n\nEvery release is listed in the [changelog](https://github.com/carloscasteher/backend-boiler-cli/blob/main/CHANGELOG.md).\n\n## Contributing\n\n```bash\npnpm install\npnpm dev                    # run the CLI from source\npnpm check                  # lint, format, types and unit tests\npnpm test:smoke             # scaffold real projects and run their toolchain\npnpm docs:dev               # VitePress docs locally\npnpm changeset              # describe your change for the next release\n```\n\n## License\n\n[MIT](./LICENSE)\n","readmeFilename":"README.md"}