Skip to main content

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:
# 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):
// wrangler.jsonc
{
  "name": "my-app",
  "compatibility_date": "2025-01-01",
  "hyperdrive": [
    {
      "binding": "DB",
      "id": "<your-hyperdrive-id>"
    }
  ]
}
Store secrets via Wrangler:
wrangler secret put JWT_SECRET
wrangler secret put ANTHROPIC_API_KEY
wrangler secret put STRIPE_WEBHOOK_SECRET

Wire up your Worker

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 docs to issue tokens
  • Set up Neon for database access
  • Add Analytics to track user events
  • Use LLM for AI completions with automatic failover