Real-time System Monitoring App
A full-stack application to monitor computer hardware performance in real-time, featuring automated end-to-end testing.
Overview
The goal of this project is to build a live dashboard that tracks a computer's vital signs (CPU load, RAM usage, and uptime). It focuses on high-frequency data updates and robust automated testing to ensure the monitoring data is always accurate and stable.
Architecture
The app uses a Client-Server architecture. The Node.js backend collects hardware data using system libraries. This data is pushed to a Next.js frontend via Server-Sent Events (SSE) for instant updates. The entire system is deployed on AWS EC2 and tested using Playwright.
Data Flow
- 1The Node.js server retrieves hardware stats (RAM, CPU, Monitor count) every second using the systeminformation library.
- 2A Server-Sent Events (SSE) connection is established between the server and the client to stream data without manual refreshing.
- 3The Next.js UI receives the data stream and renders live charts or progress bars for hardware metrics.
- 4Playwright automation scripts run headlessly to verify that the server endpoints are active and the UI displays the correct data values.
- 5The application is containerized or manually deployed to an AWS EC2 instance for public access.
Test Strategy
The testing strategy focuses 100% on Automation to handle real-time data streams. Using Playwright, I validate that the server sends valid JSON and the UI reflects real-time changes without crashing.
Automation Framework Architecture
Built a Playwright test suite to perform End-to-End (E2E) validation. It covers API status checks, data consistency between backend and frontend, and UI stability during high-frequency updates.
Detailed Tech Stack
Backend Services
Node.js, Express.js, Server-Sent Events (SSE)
Platform & Tools
Next.js, Playwright (E2E Testing), Systeminformation, AWS EC2