How yasemennnn/incident-monitoring works
This is a real-time incident monitoring system. Operational events flow from a .NET producer through Kafka into backend validation and persistence; a separate worker projects PostgreSQL snapshots into Redis for dashboard reads. Users browse event lists and details, service health, and dashboard summaries, and can change event status. The API also pushes event and summary updates over SignalR. The README documents the end-to-end flow; some subsystem links rely on that documentation because their source was not sampled.
Main entry points: EventProcessor.cs Event processor · RedisProjectionWorker.cs Projection worker · api.service.ts HTTP client · EventService.cs Event service
Components 25
Event ingestion
- Event producer
backend/IncidentMonitoring.Producer/ProducerWorker.cs - Kafka events
- Kafka consumer
backend/IncidentMonitoring.Infrastructure/Kafka/KafkaConsumerService.cs - Dead-letter topic
Backend services
- Event processor
backend/IncidentMonitoring.Core/Services/EventProcessor.cs - Event validation
backend/IncidentMonitoring.Core/Rules/EventValidator.cs - Duplicate comparison
backend/IncidentMonitoring.Core/Rules/EventComparison.cs - Event service
backend/IncidentMonitoring.Core/Services/EventService.cs - Dashboard service
backend/IncidentMonitoring.Core/Services/DashboardService.cs
Persistence and projection
- Event repository
backend/IncidentMonitoring.Infrastructure/Data/EventRepository.cs - PostgreSQL
- Projection worker
backend/IncidentMonitoring.Infrastructure/Redis/RedisProjectionWorker.cs - Dashboard projection
backend/IncidentMonitoring.Core/Rules/DashboardProjection.cs - Redis dashboard
backend/IncidentMonitoring.Infrastructure/Redis/RedisDashboardStore.cs
API and realtime
- Events API
backend/IncidentMonitoring.Api/Controllers/EventsController.cs - Dashboard API
backend/IncidentMonitoring.Api/Controllers/DashboardController.cs - SignalR notifier
backend/IncidentMonitoring.Api/Hubs/SignalREventNotifier.cs - Incident hub
backend/IncidentMonitoring.Api/Hubs/IncidentHub.cs
Dashboard UI
- HTTP client
frontend/src/app/core/services/api.service.ts - Realtime client
frontend/src/app/core/services/realtime.service.ts - Dashboard pages
frontend/src/app/features/dashboard/dashboard-page.ts - Event pages
frontend/src/app/features/events/events-page.ts - Service status page
frontend/src/app/features/services/services-page.ts
Other components
- Dashboard user
- SignalR clients
Connections 31
- Event producer → Kafka events: publishes events
- Kafka events → Kafka consumer: delivers messages
- Kafka consumer → Event processor: processes message
- Kafka consumer → Dead-letter topic: dead-letters failures
- Event processor → Event validation: validates event
- Event processor → Duplicate comparison: classifies duplicates
- Event processor → Event repository: inserts or reads
- Event repository → PostgreSQL: reads and writes
- Event processor → Projection worker: requests refresh
- Event processor → SignalR notifier: publishes event
- Events API → Event service: delegates requests
- Event service → Event repository: reads and updates
- Event service → Projection worker: requests refresh
- Event service → SignalR notifier: publishes update
- Dashboard API → Dashboard service: delegates requests
- Dashboard service → Redis dashboard: reads projection
- Projection worker → Event repository: reads snapshot
- Projection worker → Dashboard projection: builds state
- Projection worker → Redis dashboard: writes projection
- Projection worker → SignalR notifier: publishes summary
- SignalR notifier → Incident hub: sends updates
- HTTP client → Events API: calls event endpoints
- HTTP client → Dashboard API: calls dashboard endpoints
- Realtime client → Incident hub: connects to
- Incident hub → SignalR clients: pushes updates
- Dashboard user → Dashboard pages: views dashboard
- Dashboard user → Event pages: browses incidents
- Dashboard user → Service status page: checks service health
- Dashboard pages → HTTP client: loads summary
- Event pages → HTTP client: loads and updates
- Service status page → HTTP client: loads service status