AGENT SKILL
nestjs-notification
Standards for Notification Types, Service Architecture, and FCM Integration. Use when building notification services or integrating FCM in NestJS. (triggers: notification.service.ts, notification.entity.ts, notification, push, fcm, alert, reminder)
- License 许可
- MIT
- 最近更新
- 2026-06-24
- Stars
- ★ 67
- Forks
- 24
01 前言 Front Matter
- name
- nestjs-notification
- description
- Standards for Notification Types, Service Architecture, and FCM Integration. Use when building notification services or integrating FCM in NestJS. (triggers: notification.service.ts, notification.entity.ts, notification, push, fcm, alert, reminder)
02 资源文件 8
- 参考文档references/coordinator_summary_contract.md1009 B
- 参考文档references/docs_generation_summary_contract.md535 B
- 参考文档references/docs_quality_contract.md2.2 KB
- 参考文档references/docs_quality_rules.json7.8 KB
- 参考文档references/docs_quality_rules.json.SOURCE.md1.3 KB
- 参考文档references/markdown_read_protocol.md1.5 KB
- 参考文档references/questions_frontend.md2.6 KB
- 参考文档references/templates/design_guidelines_template.md12.8 KB
03 SKILL.md 正文
NestJS Notification Architecture
Priority: P0 (Standard)
Implement a "Dual-Write" notification system: persist to Database (In-App) and send via FCM (Push).
Structure
src/modules/notification/
├── notification.service.ts # Logic: DB Save + FCM Send
├── entities/
│ └── notification.entity.ts # DB Schema + NotificationType Enum
└── types/
└── notification.types.ts # Interfaces for Payloads/Metadata
Implementation Guidelines
- Use Dual-Write: Save to DB first, then attempt FCM. Catch FCM errors so they don't block the logic.
- Define Granular Types: Use
NotificationTypeEnum (e.g.,APPOINTMENT_REMINDER) for frontend icon/color logic. - Stringify Metadata: Store routing data (IDs) as JSON string in DB, but Map to string-only Key-Values for FCM
data. - Handle Tokens: Check for
fcmTokenexistence before sending. Fail gracefully if missing. - Serialize Dates: Convert Dates to ISO strings before sending to FCM.
Anti-Patterns
- No Generic Types: Avoid
type: string. Always use the Enum. - No Blocking FCM: Never
awaitFCM without atry/catch. It shouldn't crash the request. - No Complex Data in Push: Keep FCM
datapayload flat and minimal (IDs only). Fetch details on open.