I built this desktop app to track live machine health with a fast PyQt5 dashboard.
- I split the project into a real
src/system_monitorpackage instead of a single script. - I added service-layer modules so UI and metrics logic are cleanly separated.
- I introduced test coverage for core logic to show engineering discipline.
- I added optional CSV metrics export for data analysis workflows.
- Live CPU and RAM circular usage indicators
- Toggleable CPU, RAM, or combined CPU+RAM time-series graph with rolling history
- Disk usage, process count, and network throughput strip
- Uptime and capture timestamp visibility
- Resizable dashboard window with maximize and minimize support
- Splash screen startup flow
- Optional CSV telemetry export
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
python systemMonitor.pymake install
make run
make run APP_ARGS="--start-maximized"
make status
make close- I designed the app itself to run on macOS, Linux, and Windows.
- I currently use a Unix-style
Makefile, somake install/run/close/statusis for macOS and Linux. - On Windows, I run the same app with Python commands directly.
- On macOS,
make runautomatically stages Qt runtime plugins intoqt_runtime/to avoid Cocoa plugin issues from hidden virtualenv paths.
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python systemMonitor.pypython systemMonitor.py --interval-ms 1000 --history-seconds 30
python systemMonitor.py --export-csv data/metrics.csv
python systemMonitor.py --no-splash
python systemMonitor.py --start-maximized.
├── src/system_monitor/
│ ├── app.py
│ ├── constants.py
│ ├── models.py
│ ├── services/
│ └── ui/
├── tests/
├── docs/
├── main.ui
├── splash_screen.ui
└── systemMonitor.py
python -m unittest discover -s tests