How salvadore1987/notification-hub works
CommHub is a multi-channel messaging hub with a REST/Kafka submission API and an operator console. Its central workflow accepts a message, applies idempotency, templating, validation, routing, delivery filters and quota checks, then schedules delivery through provider adapters; provider callbacks and outbound events report delivery outcomes. The tree also documents batch and DLQ operations, configuration, templates, suppressions, audit, statistics and administration. The README is empty, and only selected sources were sampled, so links for unsampled adapter and application wiring are omitted where ownership is uncertain.
Main entry points: persistence Message and config store · MessagePipeline.java Message pipeline · contract Payload mapping · MessageDispatchScheduler.java Scheduled dispatch
Components 28
Ingress and console
- Admin console
web/src/App.tsx - REST API
adapter/in/rest/src/main/java/uz/hamkorbank/commhub/adapter/in/rest/MessageController.java - Kafka ingress
adapter/in/kafka/src/main/java/uz/hamkorbank/commhub/adapter/in/kafka/InboundMessageListener.java - Admin API
adapter/in/admin/src/main/java/uz/hamkorbank/commhub/adapter/in/admin - Payload mapping
adapter/in/contract/src/main/java/uz/hamkorbank/commhub/adapter/in/contract
Message processing
- Message pipeline
application/src/main/java/uz/hamkorbank/commhub/application/service/pipeline/MessagePipeline.java - Deduplication
application/src/main/java/uz/hamkorbank/commhub/application/service/pipeline/DeduplicationService.java - Template stage
application/src/main/java/uz/hamkorbank/commhub/application/service/pipeline/MessagePipeline.java - Validation stage
application/src/main/java/uz/hamkorbank/commhub/application/service/pipeline/MessagePipeline.java - Routing stage
application/src/main/java/uz/hamkorbank/commhub/application/service/pipeline/MessagePipeline.java - Delivery filters
application/src/main/java/uz/hamkorbank/commhub/application/service/pipeline/MessagePipeline.java - Quota checks
application/src/main/java/uz/hamkorbank/commhub/application/service/pipeline/MessagePipeline.java
Delivery and events
- Scheduled dispatch
adapter/in/scheduler/src/main/java/uz/hamkorbank/commhub/adapter/in/scheduler/MessageDispatchScheduler.java - Channel providers
adapter/out/policy - Provider callbacks
adapter/in/callback/src/main/java/uz/hamkorbank/commhub/adapter/in/callback/ProviderCallbackController.java - Event publishing
adapter/out/kafka/src/main/java/uz/hamkorbank/commhub/adapter/out/kafka/KafkaStatusPublisherAdapter.java
Operations and policy
- Admin use cases
application/src/main/java/uz/hamkorbank/commhub/application/service - Message queries
application/src/main/java/uz/hamkorbank/commhub/application/service/MessageQueryService.java - Batch queries
application/src/main/java/uz/hamkorbank/commhub/application/service/BatchQueryService.java - Template preview
application/src/main/java/uz/hamkorbank/commhub/application/service/TemplateQueryService.java - Suppression checks
application/src/main/java/uz/hamkorbank/commhub/application/service/SuppressionQueryService.java - Audit queries
application/src/main/java/uz/hamkorbank/commhub/application/service/AuditQueryService.java - DLQ queries
application/src/main/java/uz/hamkorbank/commhub/application/service/DlqQueryService.java
Persistence
- Message and config store
adapter/out/persistence - Dedup registry
adapter/out/persistence/src/main/java/uz/hamkorbank/commhub/adapter/out/persistence/delivery/DedupRegistryPersistenceAdapter.java
Other components
- Message source
- Operator
- Kafka broker
Connections 28
- Message source → REST API: submits
- Message source → Kafka ingress: publishes
- REST API → Payload mapping: decodes
- Kafka ingress → Payload mapping: decodes
- Payload mapping → Message pipeline: submits
- Operator → Admin console: uses
- Admin console → Admin API: requests
- Admin API → Admin use cases: invokes
- Message pipeline → Deduplication: checks idempotency
- Message pipeline → Template stage: renders content
- Message pipeline → Validation stage: validates
- Message pipeline → Routing stage: selects provider
- Message pipeline → Delivery filters: filters delivery
- Message pipeline → Quota checks: checks quotas
- Message pipeline → Message and config store: stores messages
- Deduplication → Dedup registry: claims keys
- Scheduled dispatch → Message and config store: loads queued messages
- Scheduled dispatch → Channel providers: sends messages
- Channel providers → Provider callbacks: reports outcomes
- Provider callbacks → Message and config store: updates delivery state
- Event publishing → Kafka broker: publishes status
- Admin use cases → Message and config store: manages configuration
- Message queries → Message and config store: reads messages
- Batch queries → Message and config store: reads batches
- Template preview → Message and config store: reads templates and tariffs
- Suppression checks → Message and config store: checks suppressions
- Audit queries → Message and config store: reads audit log
- DLQ queries → Message and config store: reads DLQ