Beztack initialization and module management CLI
npm install beztackCLI to create and configure Beztack monorepo projects.
- ๐ Project scaffolding: Create new Beztack projects from template
- ๐ฏ Optional modules: Select only the modules you need
- ๏ฟฝ๏ธ Interactive UI: Beautiful CLI interface with @clack/prompts
- ๐งน Auto cleanup: Removes unused dependencies, files, and code
- ๐ Codemods: Automatically updates imports and references
- ๐ฆ Smart install: Single pnpm install at the end
``bashUsing pnpm create (recommended)
pnpm create beztack
$3
`bash
pnpm dlx beztack init
`$3
`bash
pnpm dlx beztack help
`Commands
| Command | Description |
|---------|-------------|
|
create | Create a new Beztack project (default) |
| init | Configure modules in an existing project |
| help | Show help message |Available Modules
| Module | Required | Description |
|--------|----------|-------------|
| auth | โ
| Authentication with Better Auth |
| payments | โ | Payment processing with Polar |
| email | โ | Email sending with Resend and React Email |
| ai | โ | AI integration with Vercel AI SDK |
| ocr | โ | Optical Character Recognition with Tesseract.js |
| state | โ | URL state management with nuqs |
How it works
$3
1. Prompts for project name and configuration
2. Clones the Beztack template repository
3. Customizes project files with your settings
4. Installs dependencies
5. Runs
beztack init to configure modules
6. Initializes Git repository (optional)$3
1. Shows interactive module selector
2. Removes unselected modules:
- Deletes package directories
- Cleans dependencies from package.json
- Removes related files
- Runs codemods to clean imports
3. Regenerates entrypoints (routes, API modules)
4. Runs
pnpm install onceDevelopment
`bash
Build
pnpm buildWatch mode
pnpm devType check
pnpm typecheck
`Project Structure
`
src/
โโโ cli.ts # CLI entry point with commands
โโโ create.ts # Project creation logic
โโโ index.ts # Public exports
โโโ modules.ts # Module definitions
โโโ init-project.ts # Module initialization logic
โโโ remove-module.ts # Module removal logic
โโโ generate-entrypoints.ts # Entrypoint file generation
โโโ utils/
โ โโโ workspace.ts # Workspace utilities
โ โโโ remove-deps.ts # Dependency cleanup
โ โโโ get-nx-project-roots.ts # Nx project detection
โโโ codemods/
โโโ shared.ts # Shared utilities
โโโ remove-*-imports.ts # Module-specific codemods
`Adding a New Module
1. Add definition in
src/modules.ts:`typescript
{
name: "my-module",
label: "My Module",
description: "Short description",
required: false,
packageDir: "packages/my-module",
npmDeps: ["@beztack/my-module"],
nxProjects: ["api", "ui"],
hasApiModule: true,
hasUiFeature: true,
fileGlobs: [
"apps/api/server/modules/my-module/*/",
"apps/ui/src/features/my-module/*/",
],
codemods: ["remove-my-module-imports"],
}
`2. Create codemod in
src/codemods/remove-my-module-imports.ts:`typescript
import { removeImportsForPackage } from "./shared.js";export async function run() {
await removeImportsForPackage("@beztack/my-module");
}
`3. Create module files:
-
apps/api/server/modules/my-module/index.ts
- apps/ui/src/features/my-module/routes.tsx`MIT