Hewlett Packard Enterprise · Software Engineer Specialist
Real-Time Enterprise Dashboards with SSE
Case study by Abhijeet Maharana
- React
- TypeScript
- Node.js
- Server-Sent Events
- D3.js
- CI/CD
TL;DR: At Hewlett Packard Enterprise I delivered real-time dashboard features using Server-Sent Events and cloud-native patterns, used by 10,000+ daily active users. I also built the CI/CD pipelines for automated testing, linting and deployment, which cut release cycle times by a third.
What problem did the dashboards need to solve?
Enterprise dashboards are only useful if the numbers on screen are current. Users keep them open for hours, so the data has to update in place, reliably, without hammering the backend or freezing the browser.
Why Server-Sent Events instead of WebSockets?
The data flowed one way, from server to browser. For that shape, SSE has clear advantages:
- Plain HTTP. It works through corporate proxies and load balancers without special handling.
- Built-in reconnect. The browser reconnects automatically, and
Last-Event-IDlets the server resume the stream. - Simpler servers. No custom protocol or connection upgrade, so it fits standard cloud infrastructure.
WebSockets are the better choice when the client also streams data back. For read-heavy dashboards, SSE did the job with fewer moving parts.
How did the frontend handle a constant stream of updates?
A live stream can easily turn into a memory leak or a UI that re-renders constantly. The patterns that kept it stable:
- One hook owns the connection, with cleanup on unmount and reconnects that back off exponentially instead of retrying in a tight loop. I published a cleaned-up version of this pattern as a public gist: useEventSourceStream.
- Updates go only where they are needed, so a new data point re-renders the widget that shows it, not the whole dashboard.
- D3.js for data-heavy charts, which keeps rendering fast for dense visualisations.
How did CI/CD cut release cycles by a third?
Releases used to depend on manual checks. I built pipelines that run on every change:
- Lint and type check to catch mistakes in seconds.
- Automated tests before anything can merge.
- Automated build and deployment, so shipping is a merge, not a manual procedure.
Less manual QA and fewer surprises late in the cycle cut release cycle times by a third.
What were the results?
| Metric | Result |
|---|---|
| Daily active users | 10,000+ on the real-time dashboards |
| Release cycle time | Cut by a third |
| QA overhead | Reduced through automated testing, linting and deployment |
When should a startup use SSE?
If you are building live analytics, notifications, progress updates or AI responses that stream token by token, SSE is usually the simplest correct answer. Reach for WebSockets when the client needs to talk back at the same rate.