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.

