How ecommerce-taca/notification-service works
Taca is a notification service: it accepts commands and domain events through Kafka, prepares notification content, delivers email and in-app notifications, and exposes notification-center and administrative APIs. Its runtime also tracks delivery attempts and retries failures. The README documents the overall workflow and capabilities; several internal links below are dashed because the relevant implementation excerpts were not provided.
Main entry points: dispatcher.service.ts Dispatcher · notification.service.ts Notification service · notification.controller.ts In-app API · admin.controller.ts Admin API
Components 18
Event ingestion
- Kafka consumer
src/modules/consumer/notification.consumer.ts
Notification workflow
- Notification service
src/modules/notification/notification.service.ts - Dispatcher
src/modules/dispatcher/dispatcher.service.ts - Template service
src/modules/template/template.service.ts - Preference service
src/modules/preference/preference.service.ts
Delivery operations
- Delivery service
src/modules/delivery/delivery.service.ts - Retry and sweep
src/modules/delivery/delivery-retry.service.ts - Outbox relay
src/modules/delivery/delivery-outbox-relay.service.ts
User and admin APIs
- In-app API
src/modules/in-app/notification.controller.ts - In-app service
src/modules/in-app/in-app.service.ts - Admin API
src/modules/admin/admin.controller.ts - Admin service
src/modules/admin/admin.service.ts
Persistence and infrastructure
- JWT verification
src/infrastructure/auth/auth.guard.ts - MySQL persistence
src/infrastructure/persistence/data-source.ts
Other components
- Event producers
- Kafka
- SMTP email
- API users
Connections 20
- Event producers → Kafka: publishes events
README.md - Kafka → Kafka consumer: delivers messages
README.md - Kafka consumer → Notification service: initiates processing
- Notification service → MySQL persistence: persists notifications
- Delivery service → Dispatcher: dispatches notification
src/modules/delivery/delivery.service.ts - Dispatcher → Template service: loads template
src/modules/dispatcher/dispatcher.service.ts - Dispatcher → Preference service: checks preference
src/modules/dispatcher/dispatcher.service.ts - Dispatcher → SMTP email: sends email
README.md - Delivery service → Retry and sweep: retries failures
- Outbox relay → Kafka: publishes outcomes
- API users → In-app API: requests notifications
README.md - In-app API → In-app service: handles request
src/modules/in-app/notification.controller.ts - In-app service → MySQL persistence: reads and updates
- API users → Admin API: requests delivery data
- Admin API → Admin service: handles request
src/modules/admin/admin.controller.ts - Admin service → Delivery service: queries delivery
src/modules/admin/admin.service.ts - Admin service → Notification service: queries notifications
src/modules/admin/admin.service.ts - In-app API → JWT verification: authenticates requests
src/modules/in-app/notification.controller.ts - Admin API → JWT verification: authenticates requests
src/modules/admin/admin.controller.ts - Notification service → MySQL persistence: uses repository port
src/modules/notification/notification.service.ts