> ## Documentation Index
> Fetch the complete documentation index at: https://docs.latwoodtech.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Add Factory Core packages to a Cloudflare Workers app in minutes.

# Quickstart

## Prerequisites

* Cloudflare Workers project with `wrangler.jsonc`
* Neon Postgres database (for packages that need `@adrper79-dot/neon`)
* Node.js 20+

## Install packages

Install only the packages your app needs:

```bash theme={null}
# Minimal: errors + logger + auth
npm install @adrper79-dot/errors @adrper79-dot/logger @adrper79-dot/auth

# Full stack
npm install @adrper79-dot/errors @adrper79-dot/monitoring @adrper79-dot/logger \
            @adrper79-dot/auth @adrper79-dot/neon @adrper79-dot/stripe \
            @adrper79-dot/analytics @adrper79-dot/llm @adrper79-dot/email
```

## Configure bindings

Add your secrets to `wrangler.jsonc` as bindings (never as plaintext `vars`):

```jsonc theme={null}
// wrangler.jsonc
{
  "name": "my-app",
  "compatibility_date": "2025-01-01",
  "hyperdrive": [
    {
      "binding": "DB",
      "id": "<your-hyperdrive-id>"
    }
  ]
}
```

Store secrets via Wrangler:

```bash theme={null}
wrangler secret put JWT_SECRET
wrangler secret put ANTHROPIC_API_KEY
wrangler secret put STRIPE_WEBHOOK_SECRET
```

## Wire up your Worker

```typescript theme={null}
import { Hono } from 'hono';
import { jwtMiddleware, requireRole } from '@adrper79-dot/auth';
import { createLogger } from '@adrper79-dot/logger';

type Env = {
  DB: Hyperdrive;
  JWT_SECRET: string;
};

const app = new Hono<{ Bindings: Env }>();

app.use('*', (c, next) => {
  const logger = createLogger({ service: 'my-app' });
  c.set('logger', logger);
  return next();
});

app.use('/api/*', (c, next) => jwtMiddleware(c.env.JWT_SECRET)(c, next));
app.use('/api/admin/*', requireRole('admin'));

app.get('/api/me', (c) => {
  const user = c.get('user');
  return c.json({ sub: user.sub, role: user.role });
});

export default app;
```

## Next steps

* Read the [Auth](/packages/auth) docs to issue tokens
* Set up [Neon](/packages/neon) for database access
* Add [Analytics](/packages/analytics) to track user events
* Use [LLM](/packages/llm) for AI completions with automatic failover
