A complete system monitoring suite built in Python using:
- Flask
- Flask-SocketIO
- psutil
- Chart.js
- WebSockets
- Tkinter / PyQt (optional GUIs)
Includes the simple version AND the full enterprise-grade version.
- Introduction
- Project Versions
- Features
- Basic Version Code Overview
- Advanced Web Dashboard V2
- Architecture
- ER Diagram
- Flow Diagram
- Use Cases
- Real-Life Applications
- Pros & Cons
- Installation
- How to Run
- Contribution Guide
- Support
- License
This repository contains two versions of a Python task manager:
A simple CLI script using psutil to fetch CPU, RAM, and Disk usage.
A professional monitoring dashboard featuring:
- WebSockets (real-time)
- Beautiful gauge UI
- Dark/Light theme
- Authentication
- Logs + Processes
- Network statistics
- GPU usage
- Modular architecture
| Version | Description | Location |
|---|---|---|
| Basic Task Manager | Lightweight system resource monitor | basic_task_manager.py |
| Advanced Web Dashboard V2 | Full Web Monitoring Suite | web-dashboard-v2/ |
| Tkinter GUI | Desktop GUI | task_manager_tkinter.py |
| PyQt GUI | Modern GUI | task_manager_pyqt.py |
- CPU usage
- RAM usage
- Disk usage
- Simple CLI output
- Real-time WebSocket updates (1/sec)
- Stylish gauge meters
- Top CPU processes table
- System logs panel
- Network monitoring
- GPU (NVIDIA) monitoring
- Login authentication
- Session-based theme toggle (dark/light)
- REST API (theme)
- Export logs (optional)
- Fully responsive HTML dashboard
import psutil
def get_system_resources():
cpu_usage = psutil.cpu_percent(interval=1)
mem = psutil.virtual_memory()
mem_used = mem.used / (1024**3)
mem_tot = mem.total / (1024**3)
stats = {
"CPU" : f"{cpu_usage}%",
"Memory" : f"{mem_used:.2f} / {mem_tot:.2f} GB"
}
for partition in psutil.disk_partitions():
try:
usage = psutil.disk_usage(partition.mountpoint)
used_gb = usage.used / (1024**3)
total_gb = usage.total / (1024**3)
stats[f"Disk ({partition.mountpoint})"] = (
f"{used_gb:.2f} / {total_gb:.2f} GB"
)
except PermissionError:
continue
return stats
resource = get_system_resources()
for name, usage in resource.items():
print(f"{name} : {usage}")- Real-time WebSocket pushing
- Flask server
- Authentication system
- Gauges (CPU / RAM / Disk / GPU)
- Dark/Light themes
- Process manager
- Logging terminal
- Full web UI
Folder structure:
web-dashboard-v2/
│── app.py
│── templates/
│── static/
│── requirements.txt
┌─────────────────────────────────────────┐
│ User Browser │
│ ┌─────────────┐ WebSocket ┌────────┐│
│ │ dashboard.js│◀──────────────▶SocketIO││
│ └──────┬──────┘ └────────┘│
└────────┼──────────────────────────────────┘
│ Flask REST / Static
┌────────▼────────┐
│ Flask App │
│ Authentication │
│ Routing API │
│ Theme Control │
└────────┬─────────┘
│ calls
┌────────▼─────────┐
│ System Layer │
│ (psutil) │
│ CPU/RAM/Disk/GPU │
│ Process Manager │
└───────────────────┘
┌────────────┐
│ Users │
│────────────│
│ id │
│ username │
│ password │
│ theme │
└────────────┘
▲
│ session
│
┌────────────┐
│ Sessions │
│────────────│
│ user_id │
│ timestamp │
└────────────┘
[User]
│
▼
[Login Page] ──incorrect──> [Error]
│correct
▼
[Dashboard.html]
│
▼ WebSocket
[SocketIO Server]
│ polls every sec
▼
[get_system_data()]
│
▼
[psutil → CPU/RAM/Disk/Processes/GPU]
│
▼ send JSON
[Browser UI Updates]
| Use Case | Description |
|---|---|
| System Monitoring | Watch CPU/RAM/Disk live |
| Server Dashboard | Deploy on server and monitor |
| Education | Learn psutil, WebSockets, Flask |
| Diagnostics | Debug performance problems |
| GUI Development | Tkinter / PyQt practice |
- Monitoring a local PC
- Monitoring Docker containers
- Monitoring a Raspberry Pi home server
- Monitoring GPU workloads (AI training)
- Real-time dashboard in NOC rooms
- Teaching students about system internals
- Real-time updates
- Clean UI
- Uses standard Python libraries
- Cross-platform
- Web-based (access from anywhere)
- Requires Python installation
- Must be run manually
- WebSocket requires open port
- Not a replacement for full NOC tools (like Grafana)
git clone https://github.com/alok-kumar8765/task-manager.git
cd web-dashboard-v2
pip install -r requirements.txtpython app.pyOpen:
http://127.0.0.1:5000
python task_manager.py- Fork repo
- Create a new branch
- Add changes
- Submit Pull Request
git pull
git add .
git commit -m "Enhanced dashboard"
git pushIf you like the project:
🌟 Star the repository 🍴 Fork it 🐛 Report issues 💬 Request features
MIT License — free to use for personal and commercial projects.

