A comprehensive system monitoring API built with Node.js that provides real-time insights into your computer's performance and system metrics. SysSight offers a simple, lightweight solution for monitoring CPU, memory, network, and process information through RESTful endpoints.
https://syssight.onrender.com/dashboard
- π Features
- π οΈ Tech Stack
- π Project Structure
- π¦ Installation
- π Running the Application
- π API Documentation
- π§ Configuration
- π§ͺ Testing
- π Web Dashboard
- π€ Contributing
- π License
- π¨βπ» Author
- π Support
- π Version History
- CPU Monitoring: Real-time CPU metrics including model, cores, architecture, and load averages
- Memory Analytics: Detailed RAM usage statistics with formatted byte values
- Operating System Info: Complete OS details including platform, version, uptime, and hostname
- User Information: Current user details and system user data
- Network Monitoring: Network interface configurations and status
- Process Tracking: Live process metrics and environment variables
- RESTful API: Clean, intuitive HTTP endpoints for all system data
- Cross-Platform: Works on Windows, macOS, and Linux systems
- Lightweight: Minimal dependencies, built with Node.js core modules
- Web Dashboard: Interactive web interface for easy system monitoring
- Node.js - JavaScript runtime environment
- HTTP Module - Built-in HTTP server functionality
- OS Module - Operating system utilities and information
- Process Module - Process information and control
- URL Module - Request routing and parameter parsing
- File System Module - Static file serving
sysSight/
βββ server.js # Main server entry point
βββ app/
β βββ app.js # Application configuration
βββ controllers/ # API endpoint controllers
β βββ cpuController.js # CPU monitoring logic
β βββ memoryController.js # Memory monitoring logic
β βββ networkController.js # Network interface logic
β βββ osController.js # Operating system logic
β βββ processController.js # Process monitoring logic
β βββ userController.js # User information logic
βββ routes/ # API route definitions
β βββ routes.js # Main route definitions
βββ utils/ # Utility functions
β βββ formatBytes.js # Byte formatting utilities
β βββ formatTime.js # Time formatting utilities
βββ frontend/ # Web dashboard
β βββ index.html # Dashboard HTML
β βββ main.js # Dashboard JavaScript
βββ package.json # Project dependencies and scripts
βββ .gitignore # Git ignore rules
βββ README.md # Project documentation
- Node.js v14.0.0 or higher
- npm (comes with Node.js)
-
Clone the repository
git clone https://github.com/brightBediako/SysSight.git cd sysSight -
Install dependencies
npm install
-
Verify installation
node --version npm --version
npm start# Set environment variables
export NODE_ENV=production
export PORT=3000
# Start the server
npm startThe API server will start on http://localhost:3000 by default. If port 3000 is busy, it will automatically try port 3001.
Local Development:
http://localhost:3000
Production:
https://syssight.onrender.com
- GET
/- Returns API overview and available routes
- Response:
{ "name": "SysSight - Node.js System Monitor API", "description": "A comprehensive system monitoring API built with Node.js that provides real-time insights into your computer's performance and system metrics", "routes": ["/cpu", "/memory", "/user", "/os", "/process", "/network"] }
- GET
/cpu- Returns comprehensive CPU metrics
- Response:
{ "model": "Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz", "cores": 6, "architecture": "x64", "loadAvg": [1.2, 1.5, 1.8] }
- GET
/memory- Returns detailed memory statistics
- Response:
{ "total": "16 GB", "free": "8 GB", "usage": "50.00%" }
- GET
/os- Returns operating system details
- Response:
{ "platform": "win32", "type": "Windows_NT", "release": "10.0.19045", "hostname": "DESKTOP-ABC123", "uptime": "1d 2h 30m 45s" }
- GET
/user- Returns current user details
- Response:
{ "uid": 1000, "gid": 1000, "username": "john_doe", "homedir": "C:\\Users\\john_doe", "shell": "C:\\WINDOWS\\System32\\cmd.exe" }
- GET
/network- Returns network interface configurations
- Response:
{ "Ethernet": [ { "address": "192.168.1.100", "netmask": "255.255.255.0", "family": "IPv4", "mac": "00:11:22:33:44:55", "internal": false } ], "Wi-Fi": [ { "address": "192.168.1.101", "netmask": "255.255.255.0", "family": "IPv4", "mac": "aa:bb:cc:dd:ee:ff", "internal": false } ] }
- GET
/process- Returns current process metrics
- Response:
{ "pid": 12345, "title": "node", "nodeVersion": "v18.17.0", "uptime": "2h 15m 30s", "cwd": "E:\\projects\\sysSight", "memoryUsage": { "rss": "24 MB", "heapTotal": "7.5 MB", "heapUsed": "4.8 MB", "external": "1.1 MB" }, "env": { "NODE_ENV": "development" } }
All endpoints return consistent error responses:
{
"error": "Route Not Found"
}HTTP Status Codes:
200- Success404- Route not found500- Internal server error
| Variable | Default | Description |
|---|---|---|
PORT |
3000 |
Server port number |
NODE_ENV |
development |
Environment mode |
The server automatically handles port conflicts:
- If the default port (3000) is busy, it will try port 3001
- This ensures the server always starts successfully
You can test the API endpoints using:
-
cURL
curl http://localhost:3000/cpu curl http://localhost:3000/memory
-
Postman or similar API testing tools
-
Web Browser - Navigate to
http://localhost:3000for the root endpoint -
Web Dashboard - Visit
http://localhost:3000/dashboardfor the interactive interface
# Get CPU information
curl -X GET http://localhost:3000/cpu
# Get memory usage
curl -X GET http://localhost:3000/memory
# Get all system information
curl -X GET http://localhost:3000/os
# Access the web dashboard
# Open browser to: http://localhost:3000/dashboardSysSight includes a modern web dashboard for easy system monitoring:
- Access: Visit
http://localhost:3000/dashboard(local) orhttps://syssight.onrender.com/dashboard(production) - Features:
- Interactive buttons for each system metric
- Real-time data display
- Formatted JSON output
- Error handling and loading states
- Responsive design
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow existing code style and structure
- Add appropriate error handling
- Include comments for complex logic
- Test your changes thoroughly
- Ensure cross-platform compatibility
This project is licensed under the ISC License - see the LICENSE file for details.
Bright Bediako
If you encounter any issues or have questions:
- Check the Issues page
- Create a new issue with detailed information
- Include your operating system and Node.js version
- v1.0.0 - Initial release with basic system monitoring capabilities
- v1.1.0 - Added web dashboard and improved error handling
- v1.2.0 - Enhanced API responses and added CORS support
Built with β€οΈ using Node.js
SysSight - Your System's Insight