npm package: @scopeblind/create
Description: CLI tool to scaffold ScopeBlind-protected applications
Author: ScopeBlind
Latest version: 2.0.1
Deprecated: Legacy BrassProof SDK. Use protect-mcp for MCP security: npx protect-mcp

# @scopeblind/create

CLI tool to scaffold ScopeBlind-protected applications with a single command.

## Usage

### Create a New Project

```bash
npx @scopeblind/create create
```

Or install globally:

```bash
npm install -g @scopeblind/create
brass create
```

### Direct Project Creation

```bash
# Create Next.js app
npx @scopeblind/create create next-app my-app

# Create Cloudflare Worker
npx @scopeblind/create create worker my-worker
```

## Project Types

### Next.js App

Creates a Next.js 14 application with:
- ScopeBlind React hooks (`useBrass`)
- Protected API routes (`withBrassVerifier`)
- Example form component
- TypeScript configuration
- Tailwind CSS setup

**Generated structure:**

```
my-app/
├── app/
│   ├── page.tsx              # Example form using useBrass
│   └── api/
│       └── submit/
│           └── route.ts       # Protected API route
├── package.json
├── .env.example
└── README.md
```

**Next steps:**

```bash
cd my-app
npm install
cp .env.example .env.local    # Add your ScopeBlind credentials
npm run dev
```

### Cloudflare Worker

Creates a Cloudflare Worker with:
- ScopeBlind worker helper (`createBrassWorker`)
- KV namespace configuration
- Wrangler setup
- TypeScript configuration

**Generated structure:**

```
my-worker/
├── src/
│   └── index.ts              # Worker with ScopeBlind protection
├── wrangler.toml             # Cloudflare configuration
├── package.json
└── README.md
```

**Next steps:**

```bash
cd my-worker
npm install
wrangler kv:namespace create ScopeBlind_KV  # Create KV namespace
# Update wrangler.toml with KV namespace ID
wrangler secret put ScopeBlind_SECRET_KEY
wrangler secret put ScopeBlind_ISSUER_PUBKEY
wrangler deploy
```

## Interactive Mode

Running `brass create` without arguments starts interactive mode:

```bash
$ brass create

🛡️  ScopeBlind Project Creator

? What type of project do you want to create? › 
  Next.js App (with React hooks)
  Cloudflare Worker

? Project name: › my-brass-app
```

## Environment Variables

### Next.js Projects

Create `.env.local`:

```bash
ScopeBlind_SECRET_KEY=your_secret_key_here
ScopeBlind_ISSUER_PUBKEY=issuer_public_key_hex
```

### Cloudflare Workers

Set secrets via Wrangler:

```bash
wrangler secret put ScopeBlind_SECRET_KEY
wrangler secret put ScopeBlind_ISSUER_PUBKEY
```

Get issuer public key:

```bash
# For self-hosted:
curl https://your-issuer.workers.dev/pub

# For managed service:
# Get from https://brassproof.com/dashboard
```

## Commands

### `create [type] [name]`

Create a new ScopeBlind-protected project.

**Arguments:**
- `type` - Project type: `next-app` or `worker`
- `name` - Project directory name

**Options:**
- `-h, --help` - Display help
- `-V, --version` - Display version

**Examples:**

```bash
# Interactive mode
brass create

# Create Next.js app
brass create next-app my-nextjs-app

# Create Cloudflare Worker
brass create worker my-worker
```

## What Gets Created

### Next.js App

**Dependencies:**
- `next` - Next.js framework
- `react` - React library
- `@scopeblind/nextjs` - ScopeBlind Next.js integration
- `@scopeblind/verifier` - Core verifier
- `tailwindcss` - Styling

**Features:**
- Protected API route example
- Client-side form with ScopeBlind hook
- TypeScript support
- Tailwind CSS configuration
- Environment variable setup

### Cloudflare Worker

**Dependencies:**
- `@scopeblind/cloudflare` - ScopeBlind Cloudflare integration
- `@scopeblind/verifier` - Core verifier
- `wrangler` - Cloudflare CLI

**Features:**
- Protected worker handler
- KV namespace configuration
- Rate limiting setup
- TypeScript support
- Wrangler configuration

## Customization

After creating a project, you can customize:

### Rate Limits

Edit the `rateLimits` configuration:

```typescript
// Next.js: app/api/submit/route.ts
export const POST = withBrassVerifier(handler, {
  scope: 'custom-scope',
  rateLimits: {
    'custom-scope': { maxRequests: 100, windowSeconds: 3600 }
  }
})

// Worker: src/index.ts
export default {
  fetch: createBrassWorker(handler, {
    rateLimits: {
      'message': { maxRequests: 50, windowSeconds: 3600 }
    }
  })
}
```

### CORS Headers

```typescript
// Worker
export default {
  fetch: createBrassWorker(handler, {
    corsHeaders: {
      'Access-Control-Allow-Origin': 'https://yourdomain.com',
    }
  })
}
```

## Troubleshooting

### "Directory already exists"

The CLI will prompt you to overwrite. Choose yes to replace the existing directory.

### "npm install fails"

Ensure you have Node.js 18+ installed:

```bash
node --version
```

### "wrangler command not found"

Install Wrangler globally:

```bash
npm install -g wrangler
```

## Learn More

- [ScopeBlind Documentation](https://brassproof.com/docs)
- [@scopeblind/nextjs](https://www.npmjs.com/package/@scopeblind/nextjs)
- [@scopeblind/cloudflare](https://www.npmjs.com/package/@scopeblind/cloudflare)
- [@scopeblind/verifier](https://www.npmjs.com/package/@scopeblind/verifier)
- [GitHub Repository](https://github.com/tomjwxf/brass-proof-public)

## License

MIT - see [LICENSE](./LICENSE) for details.