| Dimension | Shared | Only in A | Only in B | Overlap |
|---|---|---|---|---|
| Sections | 0 | 1 | 2 | 0% |
| Commands | 0 | 0 | 1 | 0% |
| Section tags | 1 | 0 | 0 | 100% |
What each file covers
Sections
0 shared · 1 only in A · 2 only in B- − Novu Conventions
- + WebSocket Service
- + WebSocket Conventions
Commands
0 shared · 0 only in A · 1 only in B- + pnpm start:ws
Section tags
1 shared · 0 only in A · 0 only in B- code-style
Line diff
novuhq/novu · .cursor/rules/novu.mdc
@@ −1 @@
1---
2description:
3globs:
4alwaysApply: true
5---
6### Novu Conventions
7
8- File/directory names: lowercase with dashes (`components/auth-wizard`)
9- Named exports for all components
10- TypeScript: `interface` on the backend, `type` on the frontend — this is the project convention and overrides any general "prefer interfaces" guidance
11- Blank line before every `return` statement
12- Animations: import from `"motion/react"` — not `"framer-motion"` or `"motion-react"`
13- No nested ternaries
14
novuhq/novu · .cursor/rules/ws.mdc
@@ +1 @@
1---
2description: Rules for working in the WebSocket service (real-time delivery)
3globs: apps/ws/**/*
4alwaysApply: false
5---
6
7## WebSocket Service
8
9**Stack:** NestJS · Socket.io with Redis adapter (horizontal scaling)
10
11**Run:** `pnpm start:ws` — only needed for real-time features (live inbox, read/unread sync). Skip for most tasks.
12
13**Key directories:**
14```
15apps/ws/src/ # Socket gateways, guards, and event handlers
16```
17
18### WebSocket Conventions
19
20**Authentication:** Clients authenticate via JWT on the Socket.io handshake.
21
22**Scaling:** The Redis adapter is required in production — multiple ws instances share socket state through it.
23
24**Client packages:** Events emitted here are consumed by `@novu/js` and `@novu/react`. New Socket.io event types require matching updates in both packages.
25
@@ −1 +1 @@
11 ---
2−description:
3−globs:
4−alwaysApply: true
2+description: Rules for working in the WebSocket service (real-time delivery)
3+globs: apps/ws/**/*
4+alwaysApply: false
55 ---
6−### Novu Conventions
76
8−- File/directory names: lowercase with dashes (`components/auth-wizard`)
9−- Named exports for all components
10−- TypeScript: `interface` on the backend, `type` on the frontend — this is the project convention and overrides any general "prefer interfaces" guidance
11−- Blank line before every `return` statement
12−- Animations: import from `"motion/react"` — not `"framer-motion"` or `"motion-react"`
13−- No nested ternaries
7+## WebSocket Service
8+
9+**Stack:** NestJS · Socket.io with Redis adapter (horizontal scaling)
10+
11+**Run:** `pnpm start:ws` — only needed for real-time features (live inbox, read/unread sync). Skip for most tasks.
12+
13+**Key directories:**
14+```
15+apps/ws/src/ # Socket gateways, guards, and event handlers
16+```
17+
18+### WebSocket Conventions
19+
20+**Authentication:** Clients authenticate via JWT on the Socket.io handshake.
21+
22+**Scaling:** The Redis adapter is required in production — multiple ws instances share socket state through it.
23+
24+**Client packages:** Events emitted here are consumed by `@novu/js` and `@novu/react`. New Socket.io event types require matching updates in both packages.
1425
