
TriaGen
A real-time incident management platform that helps remote engineering teams collaborate, track production issues, and coordinate incident response from a single workspace.
The Problem
Remote engineering teams often rely on multiple tools such as chat applications, emails, and issue trackers when production incidents occur. Important updates become scattered across conversations, making it difficult to understand the current status of an incident or coordinate a response efficiently.
Engineering Challenges
The main challenge was keeping all connected users synchronized in real time while processing background tasks such as SLA monitoring, automatic escalation, and evidence management without slowing down the application.
Step-by-Step Workflow
1. Real-Time Collaboration
NestJS receives incident events and broadcasts updates through Socket.io. Status changes, comments, assignments, acknowledgements, and notifications are immediately reflected across every connected client without requiring a page refresh.
2. Background Job Processing
BullMQ and Redis handle scheduled operations such as SLA monitoring and automatic escalation. Separating these tasks from the main request cycle keeps the application responsive while ensuring background jobs continue to execute reliably.
3. Cloud Storage & Deployment
Evidence such as screenshots, logs, and supporting documents is stored securely in AWS S3. The frontend and backend are containerized with Docker and deployed to AWS EC2 through GitHub Actions, providing a consistent deployment workflow.
Why This Architecture?
The application separates real-time communication, background processing, and persistent storage into dedicated responsibilities. NestJS provides a modular backend, Socket.io enables live collaboration, and BullMQ processes scheduled work independently, making the overall system easier to maintain and extend.
Key Features
- Dedicated incident rooms for real-time team collaboration.
- Live status updates, comments, assignments, and notifications using Socket.io.
- Role-based access control for administrators, responders, and team members.
- Automatic SLA monitoring and escalation using BullMQ with Redis.
- Evidence management with secure AWS S3 file storage.
- Post-mortem report generation for completed incidents.
- Dockerized deployment with GitHub Actions on AWS EC2.
Performance
Real-time communication is handled through persistent WebSocket connections, while scheduled operations such as escalation and SLA monitoring run independently in background workers. This separation allows users to continue collaborating without waiting for long-running tasks to complete.
Trade-offs
Supporting WebSocket communication, background workers, and cloud storage increases the overall system complexity compared to a traditional CRUD application. Coordinating events across multiple services also requires careful handling to keep client state consistent.
Lessons Learned
Building TriaGen gave me hands-on experience designing real-time applications with Socket.io, building modular backend services using NestJS, processing asynchronous jobs with BullMQ and Redis, integrating AWS S3 for file storage, and deploying containerized applications through Docker and GitHub Actions.