A sleek, modular, and customizable system monitoring widget application built with Electron. DevDash provides real-time at-a-glance views of your system's core statistics, allowing you to position widgets anywhere on your screen.
- Modular Widgets: Display only the information you need. Each widget is an independent window.
- Real-Time Monitoring: Get live data on CPU, Memory, Network, and running processes.
- Customizable Layout: Drag and drop widgets to arrange them perfectly on your desktop.
- System Tray Integration: Control widget visibility from a convenient system tray menu.
- Lightweight & Clean: Built with performance and a minimal aesthetic in mind. Widgets are semi-transparent and stay on top of other windows.
- Cross-Platform: Works on Windows, macOS, and Linux.
- CPU: Displays current total CPU usage.
- Memory: Shows current RAM usage as a percentage of total memory.
- Network: Shows real-time download (↓) and upload (↑) speeds.
- Processes: Lists the top 5 processes currently consuming the most CPU.
To run this project from source, you'll need to have Node.js and npm installed.
-
Clone the repository:
git clone https://github.com/blackbat13/devdash.git cd devdash -
Install dependencies:
npm install
-
Run the application:
npm start
The widgets will appear on your screen. A system tray icon will also be created for managing them.
You can package DevDash into a standalone executable for your operating system.
-
Install the packaging tool:
npm install --save-dev electron-packager
-
Run the packaging script:
-
For Windows:
npm run pack-win
-
For macOS:
npm run pack-mac
-
For Linux:
npm run pack-linux
-
The packaged application will be found in the /dist folder.
The project is organized into a modular structure for easy maintenance and extension.
devdash/
├── assets/ # Icons and other static assets
├── src/ # Main application logic
│ └── main.js # Electron main process (controls windows)
├── widgets/ # Widget-specific files
│ ├── widget-*.html # HTML templates for each widget
│ ├── renderer-*.js # JS logic for each widget
│ └── widget-style.css # Shared stylesheet for all widgets
├── package.json # Project metadata and scripts
└── README.md # This fileThe widget system is designed to be easily extensible. To add a new widget:
- Create HTML and JS files in the
widgets/directory, following the naming convention (widget-name.html,renderer-name.js). - Link the stylesheet in your new HTML file:
<link rel="stylesheet" href="widget-style.css">. - Update
src/main.js:- Add your new widget to the
windowsobject. - Add a
createWidget()call for it inside thecreateAllWidgets()function. - Add a menu item in the
updateTrayMenu()function.
- Add your new widget to the
- Electron - Cross-platform desktop application framework
- Node.js - JavaScript runtime
- systeminformation - System information library
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement".
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
Distributed under the MIT License. See LICENSE for more information.
A huge thanks to the creators and maintainers of Electron and the vast open-source ecosystem that makes projects like this possible.
