{"_id":"@arbitrat/next-generator","_rev":"2-6a7684508a572ad0a1142902044b5100","name":"@arbitrat/next-generator","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.0":{"name":"@arbitrat/next-generator","version":"1.0.0","license":"MIT","_id":"@arbitrat/next-generator@1.0.0","maintainers":[{"name":"arbitsmith99","email":"arbitrat.dev@gmail.com"},{"name":"goblin45","email":"rajarshid.02@gmail.com"}],"dist":{"shasum":"3b21ec0dc34781f9679fbc0801c844c81c4ea308","tarball":"https://registry.npmjs.org/@arbitrat/next-generator/-/next-generator-1.0.0.tgz","fileCount":72,"integrity":"sha512-gRyasrpnGodiuyAwkVEGLiI3siBqoCSFduxVeOcWOAE4QhRNLkupeLwGkhiJ6YyIYCbtDFpyle0t9BE5enpMjQ==","signatures":[{"sig":"MEYCIQCn8yj4ZpscMOXttCp59TqbRaErY7fC3xSg4WgSJbPEHwIhAP9td1qFbCScUJepdWBKkQEa0LfcMVCD8yp+nEAXP9b6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113283},"type":"module","_from":"file:arbitrat-next-generator-1.0.0.tgz","types":"./src/index.ts","engines":{"node":">=20"},"exports":{".":"./src/index.ts"},"_npmUser":{"name":"goblin45","email":"rajarshid.02@gmail.com"},"_resolved":"/private/var/folders/gm/bn3s8lq10k7_fk0w_zcdh7zc0000gn/T/791d00ebc7359dd16a81df2719db1a51/arbitrat-next-generator-1.0.0.tgz","_integrity":"sha512-gRyasrpnGodiuyAwkVEGLiI3siBqoCSFduxVeOcWOAE4QhRNLkupeLwGkhiJ6YyIYCbtDFpyle0t9BE5enpMjQ==","_npmVersion":"11.17.0","description":"Opinionated Next.js generator used by @arbitrat/cli.","directories":{},"_nodeVersion":"26.5.0","dependencies":{"@arbitrat/core":"1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/next-generator_1.0.0_1787509393640_0.3371333133124321","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@arbitrat/next-generator","version":"1.0.1","description":"Opinionated Next.js generator used by @arbitrat/cli.","type":"module","exports":{".":"./src/index.ts"},"types":"./src/index.ts","license":"MIT","publishConfig":{"access":"public"},"engines":{"node":">=20"},"dependencies":{"@arbitrat/core":"1.0.1"},"_id":"@arbitrat/next-generator@1.0.1","_integrity":"sha512-iozDa2d/ON5ch+RH7b5johkqE2vZ+6aqUZFjsRcSV7qqJ3m+0oCC85H7LXCg5OhfHA5xfGc27fvthYzKb3JxKw==","_resolved":"/private/var/folders/gm/bn3s8lq10k7_fk0w_zcdh7zc0000gn/T/682aa6b7a59c9cf6f9e322f21b66d67c/arbitrat-next-generator-1.0.1.tgz","_from":"file:arbitrat-next-generator-1.0.1.tgz","_nodeVersion":"26.5.0","_npmVersion":"11.17.0","dist":{"integrity":"sha512-iozDa2d/ON5ch+RH7b5johkqE2vZ+6aqUZFjsRcSV7qqJ3m+0oCC85H7LXCg5OhfHA5xfGc27fvthYzKb3JxKw==","shasum":"e1785754e7da3662166baf53af0ef8bbf45da25e","tarball":"https://registry.npmjs.org/@arbitrat/next-generator/-/next-generator-1.0.1.tgz","fileCount":72,"unpackedSize":115443,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICjI+XP6hHXrzIqQ8kjaTYjxyfpnahBAARBbU1n3m6PTAiEAhnlkjG82QXYmhkkzdtR42OKGA2NfpiDz5S90NZxJMVk="}]},"_npmUser":{"name":"goblin45","email":"rajarshid.02@gmail.com"},"directories":{},"maintainers":[{"name":"arbitsmith99","email":"arbitrat.dev@gmail.com"},{"name":"goblin45","email":"rajarshid.02@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next-generator_1.0.1_1787534930257_0.2699389654184663"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-23T18:23:13.331Z","modified":"2026-08-24T01:28:50.613Z","1.0.0":"2026-08-23T18:23:13.777Z","1.0.1":"2026-08-24T01:28:50.424Z"},"license":"MIT","description":"Opinionated Next.js generator used by @arbitrat/cli.","maintainers":[{"name":"arbitsmith99","email":"arbitrat.dev@gmail.com"},{"name":"goblin45","email":"rajarshid.02@gmail.com"}],"readme":"# @arbitrat/next-generator\n\nGenerates an Arbitrat Next.js app: a standalone npm project, or `apps/web` inside a pnpm workspace when `@arbitrat/cli` pairs it with Nest.\n\nThis is the Next half of `arbi create workspace`. You can call it from Node as well, which is useful if you are composing generators and not interested in re-prompting humans for Tailwind vs CSS Modules.\n\nOpinionated for Arbitrat engineers. [arbitrat.org](https://arbitrat.org)\n\n## Install\n\n```bash\nnpm install @arbitrat/next-generator\n```\n\nDepends on `@arbitrat/core`. Node.js 20+. Ships TypeScript source.\n\nMost people should use the CLI instead:\n\n```bash\nnpm install -g @arbitrat/cli\narbi create workspace\n```\n\n## What it generates\n\nStarts from `create-next-app`, then applies the Arbitrat overlay:\n\n- App Router, strict TypeScript\n- Infisical-wrapped scripts and Husky (unless you skip hooks)\n- Feature modules under `src/modules` (schema → repository → service → controller)\n- `app/api` routes via `handleApi`\n- Shared UI, wrappers, and hooks\n- Project docs (`README`, `SETUP`, `CONTRIBUTING`, `docs/*`, `AGENTS.md`)\n\n**CSS is exclusive:** Tailwind **or** CSS Modules. Not both. Your future self will thank present you.\n\nInternationalization (when selected) puts pages under `app/[locale]/`. API routes stay in `app/api/`.\n\n## Add-ons\n\n| Id | Name | Notes |\n| --- | --- | --- |\n| `theming` | Theming | `next-themes` (dark / light / system) |\n| `jest` | Jest | Jest + Next.js test config |\n| `docker` | Docker | Dockerfile + Next `output: \"standalone\"` |\n| `prisma` | Prisma | Prisma + Postgres from feature-module repositories. Standalone Next only — hide this when Nest owns the API. |\n| `redis` | Redis | Client in `lib/`, used from modules. Same rule as Prisma in a web+api workspace. |\n| `i18n` | Internationalization | `next-intl`; configure `locales` and `defaultLocale` |\n| `sentry` | Sentry | `@sentry/nextjs` |\n\nAdd-ons are registered in [`src/addons/index.ts`](./src/addons/index.ts). Templates live in `templates/`.\n\n## Programmatic use\n\n```ts\nimport { generateNextApp } from \"@arbitrat/next-generator\";\n\nawait generateNextApp({\n  projectName: \"web\",\n  targetDir: \"./web\",\n  cssStrategy: \"tailwind\",\n  selectedAddons: [\"theming\", \"jest\"],\n  addonConfig: {\n    i18n: { locales: \"en,es\", defaultLocale: \"en\" },\n  },\n});\n```\n\nOptional flags: `packageManager` (`npm` | `pnpm`), `skipGit`, `skipHusky`, `skipInstall` — used when the CLI is generating a workspace and does not want three git inits.\n\nAlso exported: `createAddonsRegistry()` for listing and resolving add-ons.\n\nEntry: [`src/index.ts`](./src/index.ts).\n","readmeFilename":"README.md"}