К основному содержанию
правило

cloudflare-workers-hono-angular-saas-cursorrules-prompt-file

Правило для Cursor задаёт стек и соглашения для SaaS на Cloudflare Workers: Hono API, Angular, Drizzle, Clerk, Stripe.

Установить в Cursor · Вручную: положить файлы Все способы и платформы ↓
.cursor/rules/cloudflare-workers-hono-angular-saas-cursorrules-prompt-file.mdc
Открыть на GitHub

Что делает cloudflare-workers-hono-angular-saas-cursorrules-prompt-file

Файл описывает один стек целиком: Cloudflare Workers с Hono, фронтенд на Angular с Ionic и PrimeNG, база D1 или Neon через Drizzle, валидация на Zod, авторизация Clerk, платежи Stripe, фоновые задачи Inngest, письма Resend. Сборка на Bun, тесты на Vitest и Playwright, линт ESLint с Prettier, аналитика PostHog и Sentry. Правило применяется ко всем файлам проекта, поэтому агент держит эти версии и библиотеки в голове при любой правке.

Дальше идут конкретные требования по слоям. В Hono — инлайн-обработчики ради вывода типов RPC, цепочки методов, hc<AppType>(BASE_URL) для типизированного клиента, @hono/zod-validator на всех телах запросов и единый формат ошибки. В Angular — только standalone-компоненты, сигналы, HttpResource, новый синтаксис @if/@for вместо *ngIf. В Drizzle — sqliteTable для D1 и Batch API, потому что D1 не поддерживает транзакции. Отдельные блоки про безопасность по OWASP, заголовки, Turnstile и проверку подписи вебхуков Stripe.

Есть числовые пороги, к которым агент будет подгонять код: Lighthouse a11y не ниже 95, perf не ниже 75, LCP до 2.5s, CLS до 0.1, INP до 200ms, JS до 200KB gz, CSS до 50KB gz, функции не длиннее 50 строк. Это повод проверить, готовы ли вы жить с такими лимитами в своём проекте. Для деплоя правило даёт команду npx wrangler deploy с последующей очисткой кеша через API Cloudflare, а для старта — пример воркера на Hono с secureHeaders и CORS.

Какие задачи решает

  • задать агенту единый стек для SaaS на Cloudflare Workers
  • получить типизированный RPC-клиент между Hono и Angular
  • прописать валидацию всех тел запросов через Zod
  • настроить фоновые задачи Inngest в воркере
  • удержать пороги Lighthouse и размеры бандла при генерации кода

Примеры запросов агенту

  • добавь новый эндпоинт в Hono API с валидацией тела через Zod
  • сделай Angular-компонент на сигналах со списком пользователей
  • настрой фоновую задачу Inngest для отправки письма через Resend

Как установить cloudflare-workers-hono-angular-saas-cursorrules-prompt-file

Вручную: положить файлы

.cursor/rules/cloudflare-workers-hono-angular-saas-cursorrules-prompt-file.mdc

Во frontmatter: description, globs, alwaysApply

По шагам, с командами для каждой платформы: Cursor rules: файлы .mdc, четыре режима и замена .cursorrules

Из того же набора68

cypress-defect-tracking-cursorrules-prompt-file Правило для Cursor, которое превращает агента в QA-инженера: пишет тесты Cypress с тегами команд, категорий и case ID и собирает отчёты через qa-shadow-report. ★ 41 011звёзд репо cursorrules-cursor-ai-wordpress-draft-macos-prompt Правило Cursor, которое описывает проект PressThat: системный трей-апп для WordPress, создающий черновики записей. Пригодится, если вы ведёте этот проект в Cursor. ★ 41 011звёзд репо cursor-ai-react-typescript-shadcn-ui-cursorrules-p Правило для Cursor, которое настраивает агента писать на React и TypeScript так, как принято в проектах с shadcn/ui и Tailwind CSS. ★ 41 011звёзд репо code-style-consistency-cursorrules-prompt-file Правило заставляет агента сначала изучить стиль проекта, а потом писать код под него. Пригодится, когда в репозитории уже есть свои конвенции. ★ 41 011звёзд репо chrome-extension-dev-js-typescript-cursorrules-pro Правило для Cursor, которое настраивает агента писать код расширений Chrome на JavaScript и TypeScript по единому своду соглашений. ★ 41 011звёзд репо ascii-simulation-game-cursorrules-prompt-file Правило задаёт Cursor рамки для игры-наблюдения: сетка 10x10, ASCII-графика, ходы и логи. Пригодится, если делаете симуляцию в духе Conway's Game of Life. ★ 41 011звёзд репо ankra-cli Правило подсказывает агенту Cursor, как работать с CLI платформы Ankra: кластеры, стеки, Helm и токены. ★ 41 011звёзд репо android-jetpack-compose-cursorrules-prompt-file Правило для Cursor, которое задаёт агенту ориентиры по Android-разработке на Jetpack Compose: архитектура, состояние, тесты. ★ 41 011звёзд репо

Похожие

bun-cloudflare-workers secondsky Скилл для сборки и деплоя Cloudflare Workers на Bun: подсказывает структуру проекта, биндинги KV, D1, R2 и Durable Objects. CX Codex +1 402установок cloudflare-workers-frameworks secondsky Подсказывает агенту, как поднять Hono, Remix, Next.js, Astro, SvelteKit, Qwik или Nuxt на Cloudflare Workers, и разбирает типовые ошибки сборки. CX Codex +1 309установок hono-api-scaffolder jezweb Создаёт маршруты Hono для Cloudflare Workers с проверкой Zod, обработкой ошибок и документацией API. Нужен после подготовки каркаса проекта. CX Codex +1 1 600установок hono-typescript Mindrally Задаёт агенту правила разработки API на Hono и TypeScript под Cloudflare Workers, Deno, Bun и Node.js. Пригодится, когда проект уже на Hono или только переезжает на него. CX Codex +1 819установок hono-core bobmatnyc Скилл по Hono: маршрутизация, контекст, обработчики и ответы для одного кода на Cloudflare Workers, Deno, Bun и Node.js. CX Codex +1 483установок cloudflare-worker-builder jezweb Разворачивает проект Cloudflare Workers с маршрутизацией Hono, плагином Vite и статическими ассетами. Помогает настроить привязки к D1, R2, KV и устранить ошибки деплоя. CX Codex +1 1 400установок

Рядом в теме «Бэкенд и API»

Всё по теме «Бэкенд и API» →

Вопросы о cloudflare-workers-hono-angular-saas-cursorrules-prompt-file

Как установить cloudflare-workers-hono-angular-saas-cursorrules-prompt-file в Cursor?

Создайте файл .cursor/rules/cloudflare-workers-hono-angular-saas-cursorrules-prompt-file.mdc в корне проекта и вставьте в него содержимое правила. Cursor подхватит его автоматически.

Что делает это правило?

Описывает полный стек SaaS на Cloudflare Workers: Hono для API, Angular для фронтенда, Drizzle с D1 или Neon, Clerk, Stripe, Inngest. Агент следует этим соглашениям при генерации и правке кода.

Какие ограничения по производительности задаёт правило?

Lighthouse a11y не ниже 95 и perf не ниже 75, LCP до 2.5s, CLS до 0.1, INP до 200ms, JS до 200KB gz, CSS до 50KB gz. Функции не длиннее 50 строк, цикломатическая сложность до 10.

Исходный текст

cloudflare-workers-hono-angular-saas-cursorrules-prompt-file.mdc · CC0-1.0
---
description: "Cursor rules for full-stack SaaS applications on Cloudflare Workers with Hono APIs, Angular frontends, typed RPC, D1/Neon, and production observability."
globs: **/*
alwaysApply: false
---
# Cloudflare Workers + Hono + Angular SaaS

Full-stack SaaS on Cloudflare Workers with Hono API, Angular frontend, and enterprise integrations.

## Stack
CF Workers+Hono v4.12+ | Angular 21+Ionic 8+PrimeNG 21 | D1/Neon | Drizzle v1 | Zod | Clerk Core 3 | Stripe | Inngest v4 | Resend | Bun 1.3 | Playwright v1.59+ | Vitest | ESLint+Prettier | PostHog | Sentry

## TypeScript
- Strict mode, never `any` (use `unknown`), prefer `interface` over `type`
- `readonly` when not reassigned, `undefined` over `null`
- Zod as source of truth for validation
- ESLint flat config (`eslint.config.ts`) + typescript-eslint + Prettier

## Hono API
- Inline handlers for RPC type inference (never separate controller files)
- Method chaining: `app.use().get().post()` preserves types
- `hc<AppType>(BASE_URL)` for typed client
- `@hono/zod-validator` on ALL request bodies
- `app.onError()` + `app.notFound()` centralized
- Split large apps: `app.route('/path', subApp)`
- Error envelope: `{ error: string, code?: string, details?: unknown }`
- `createFactory<{ Bindings: Env }>()` for reusable middleware chains
- `GET /health` returns `{ status, version, timestamp }`

## Angular
- Standalone only (no NgModules), Angular 21 zoneless by default
- Signals stable: `signal()`, `computed()`, `effect()`, `linkedSignal()`, `resource()`
- `HttpResource` for data fetching
- Control flow: `@if`/`@for`/`@switch`/`@defer` (not `*ngIf`/`*ngFor`)
- kebab-case files, one component per file, `providedIn: 'root'`
- PrimeNG for UI components

## Drizzle v1
- `sqliteTable` for D1, plural snake_case tables
- `$inferSelect`/`$inferInsert` for types
- `createInsertSchema`/`createSelectSchema` from `drizzle-orm/zod`
- Batch API (not `BEGIN` — D1 doesn't support transactions)
- Prepared statements for repeated queries

## CF Workers
- CPU limit: 10ms free / 30s paid
- `ctx.waitUntil()` for async post-response work
- `ctx.passThroughOnException()` for graceful degradation
- Bindings typed via `Env` interface
- D1 global read replication for latency reduction
- Workers Builds for native CI/CD (preview URLs per branch)

## Inngest v4 (Background Jobs)
- `eventType('name', { schema: z.object({...}) })` per-event (v4 breaking)
- `inngest/cloudflare` adapter + `inngest.setEnvVars(c.env)` for Workers
- Step functions: `step.run()`, `step.sleep()`, `step.waitForEvent()`, `step.sendEvent()`
- `step.ai.infer()` offloads inference (zero compute during wait)
- `step.realtime.publish()` for durable pub/sub
- Each step idempotent, retried independently

## Testing (TDD)
- Failing test FIRST, then implement
- Playwright for E2E: 6 breakpoints (375, 390, 768, 1024, 1280, 1920)
- Vitest for unit tests
- No sleeps — use `waitFor`/`toBeVisible()`
- Selectors: `data-testid` > role > text
- axe-core 0 violations
- `PROD_URL` env var for production testing

## Security (OWASP Top 10:2025)
- Must: HSTS, CSP (nonce-based strict), X-Content-Type-Options, X-Frame-Options
- Must: Referrer-Policy, Permissions-Policy, COOP, COEP, CORP
- Remove: X-XSS-Protection, Expect-CT, Server, X-Powered-By
- Turnstile on all forms, Zod validation on all inputs
- Stripe webhooks: verify signature, deduplicate via KV

## Auth (Clerk)
- JWT verified per-request (no session store)
- Webhook sync: Clerk → D1 for user data
- RBAC: Clerk org roles for org-scoped, D1 for app-level
- Route layers: public → auth-only → role-gated → owner-only

## Quality
- Lighthouse: a11y ≥95, perf ≥75
- WCAG 2.2 AA compliance
- LCP ≤2.5s, CLS ≤0.1, INP ≤200ms
- JS ≤200KB gz, CSS ≤50KB gz
- Functions ≤50 lines, cyclomatic complexity ≤10

## Deploy
```bash
npx wrangler deploy && curl -sX POST \
  "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/purge_cache" \
  -H "Authorization: Bearer ${CF_API_TOKEN}" \
  -H "Content-Type: application/json" \
  -d '{"purge_everything":true}'
```

## Hono Worker Starter
```typescript
import { Hono } from 'hono';
import { secureHeaders } from 'hono/secure-headers';
import { cors } from 'hono/cors';

interface Env {
  DB: D1Database;
  KV: KVNamespace;
  AI: Ai;
  TURNSTILE_SECRET: string;
}

const app = new Hono<{ Bindings: Env }>();
app.use('*', secureHeaders());
app.use('/api/*', cors({ origin: ['https://yourdomain.com'] }));
app.get('/health', (c) => c.json({ status: 'ok', timestamp: new Date().toISOString() }));
export default app;
```

© PatrickJS · CC0-1.0 · PatrickJS/awesome-cursorrules

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой