

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1234567## API Service89**Stack:** NestJS + Express · MongoDB (via `libs/dal`) · Redis + Bull · ClickHouse (analytics/traces) · Clerk or Better Auth · `@nestjs/swagger`1011**Run:** `pnpm start:api:dev` — port 3000, OpenAPI at `http://localhost:3000/openapi`1213**Tests/lint:** see testing.mdc1415**Key directories:**16```17apps/api/src/app/ # Route controllers and modules18apps/api/src/ee/ # Enterprise-only features19apps/api/migrations/ # MongoDB migrations20apps/api/migrations/clickhouse-migrations/ # ClickHouse schema migrations21```2223---2425### API Service Conventions2627**Controllers**28- Every protected route must use `@RequireAuthentication()`.29- Routes accessible via user API keys or the official SDK must also use `@ExternalApiAccessible`.30- Routes accessible via Clerk OAuth (DCR) access tokens must also use `@OAuthAccessible`.31- Controller method names follow: `getEntityName`, `listEntityName`, `createEntityName`, `updateEntityName`, `deleteEntityName`.32- List endpoints must support pagination and use `@SdkUsePagination`.33- Group SDK endpoints with `@SdkGroupName` using `.` as the subresource separator (e.g., `Subscribers.Notifications`).3435**Use-cases (CQRS)**36- Business logic lives in use-case classes, not controllers.37- Use-cases receive a typed command/query and return a typed result via `execute(command)`.38- Never put database queries directly in controllers.3940**Database**41- Always use `libs/dal` repositories for all queries; see dal-repository.mdc for enforcement rules.4243**OpenAPI**44- Every endpoint must have `@ApiOperation`, `@ApiResponse`, and `@ApiTags` decorators.45- Validate with `npm run lint:openapi` (run with API started) before submitting a PR.4647**Migrations**48- Place migration scripts in `apps/api/migrations/<change-description>/<change-action>.ts`.49- Run via `npm run migration -- ./migrations/<path>.ts`.50- Never rename existing migration scripts — they are referenced in user-facing docs.5152**Canonical example:** @apps/api/src/app/tenant/tenant.controller.ts53
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| novuhq/novu.cursor/rules/api-property-optionality-hygiene.mdc · 39k | Cursor rules | gitagent-behaviour | 68/100 | 14 days ago | |
| novuhq/novu.cursor/rules/clickhouse.mdc · 39k | Cursor rules | style | 42/100 | 14 days ago | |
| novuhq/novu.cursor/rules/context-engineering.mdc · 39k | Cursor rules | no sections | 16/100 | 14 days ago | |
| novuhq/novu.cursor/rules/dal-repository.mdc · 39k | Cursor rules | do-not | 46/100 | 14 days ago | |
| novuhq/novu.cursor/rules/dashboard.mdc · 39k | Cursor rules | style | 57/100 | 14 days ago | |
| novuhq/novu.cursor/rules/dependency-graph.mdc · 39k | Cursor rules | no sections | 22/100 | 14 days ago | |
| novuhq/novu.cursor/rules/docs-mintlify-steps.mdc · 39k | Cursor rules | do-notagent-behaviour | 43/100 | 14 days ago | |
| novuhq/novu.cursor/rules/infrastructure.mdc · 39k | Cursor rules | no sections | 50/100 | 14 days ago | |
| novuhq/novu.cursor/rules/novu.mdc · 39k | Cursor rules | style | 20/100 | 14 days ago | |
| novuhq/novu.cursor/rules/packages.mdc · 39k | Cursor rules | stylearchdependenciesdocs | 46/100 | 14 days ago | |
| novuhq/novu.cursor/rules/pnpm-release-age.mdc · 39k | Cursor rules | no sections | 24/100 | 14 days ago | |
| novuhq/novu.cursor/rules/pullrequest.mdc · 39k | Cursor rules | gitdo-not | 37/100 | 14 days ago | |
| novuhq/novu.cursor/rules/safe-api-tests.mdc · 39k | Cursor rules | setupteststyletesting-strategy+4 | 88/100 | 14 days ago | |
| novuhq/novu.cursor/rules/testing.mdc · 39k | Cursor rules | teststyletesting-strategy | 54/100 | 14 days ago | |
| novuhq/novu.cursor/rules/worker.mdc · 39k | Cursor rules | style | 65/100 | 14 days ago | |
| novuhq/novu.cursor/rules/ws.mdc · 39k | Cursor rules | style | 51/100 | 14 days ago | |
| novuhq/novu.deepsec/AGENTS.md · 39k | AGENTS.md | setupagent-behaviour | 33/100 | 14 days ago | |
| novuhq/novuAGENTS.md · 39k | AGENTS.md | builddo-notagent-behaviour | 63/100 | 14 days ago |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| hiromaily/go-crypto-wallet.cursor/rules/typescript.mdc · 126 | Cursor rules | setupbuildtestlint-format+6 | 100/100 | 14 days ago | |
| TechSquidTV/Hermes.cursor/rules/10-hermes-api.mdc · 46 | Cursor rules | testlint-formatstylearch+5 | 100/100 | 14 days ago | |
| dodgecfr/combatfilms-webapp.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| deifos/clipmira-subtitles.cursor/rules/frontend.mdc · 1 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| markstev/mark-starter.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+6 | 99/100 | 14 days ago | |
| Allymahmoud/case-intake-platform.cursor/rules/frontend.mdc · 0 | Cursor rules | setuptestlint-formatstyle+7 | 99/100 | 14 days ago | |
| langflow-ai/langflow.cursor/rules/docs_development.mdc · 153k | Cursor rules | setupbuildtestlint-format+7 | 97/100 | 14 days ago | |
| bybren-llc/safe-agentic-workflow.cursor/rules/10-backend-python.mdc · 399 | Cursor rules | testlint-formatstylegit+4 | 97/100 | today |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/novuhq-novu-cursor-rules-api)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.