This guide walks through cloning the project, installing dependencies, and running the app on your machine.
| Requirement | Notes |
|---|---|
| Node.js | v18 LTS or newer (v20+ recommended). Download Node or install via nvm. |
| npm | Comes with Node.js. This repo uses npm for scripts (package-lock.json). |
| Git | To clone the repository. |
Platform notes
- macOS / Linux: Full desktop app features (system stats via IPC, process list) work as implemented in
electron/main.ts. - Windows: Process listing uses PowerShell; ensure you can run PowerShell scripts if builds are restricted on your machine.
Replace the URL with your fork or this project’s GitHub URL.
git clone https://github.com/<your-username>/<your-repo>.git
cd <your-repo>If the path contains spaces, quote it:
cd "/path/to/System Dashboard"From the project root (the folder that contains package.json):
npm installWhat to expect
- Downloads JavaScript dependencies into
node_modules/. electronruns a post-install step that downloads the Electron binary. Keep internet access enabled.- First run may take a few minutes.
If npm install fails with permission or cache errors, try:
npm cache verify
npm installStarts the Vite dev server and opens Electron pointed at http://localhost:5173.
npm run dev- Renderer (UI): http://localhost:5173 — you can open this in a browser to preview the React UI. Live metrics from the OS require
window.electronAPI, which only exists inside Electron (viaelectron/preload.ts). In the browser alone, the app falls back to simulated / partial behavior depending onApp.tsx. - Electron: Opens after Vite is ready; DevTools may open in development.
Useful for quick UI work without the desktop shell:
npm run dev:reactThen open http://localhost:5173.
| Command | Purpose |
|---|---|
npm run dev |
Vite + Electron together |
npm run dev:react |
Vite only (port 5173) |
npm run typecheck |
TypeScript check (renderer + Electron) |
npm run build:react |
Production build of the web assets → dist/renderer/ |
npm run build:electron |
Compile electron/*.ts → dist/electron/ |
npm run build |
Full production build + pack installers via electron-builder → release/ |
npm run preview |
Local preview of the built renderer (not the same as dev) |
Build the UI, compile Electron, then create a platform installer:
npm run buildArtifacts appear under release/ (for example .dmg on macOS, .exe on Windows, .AppImage on Linux).
electron-builder normally builds for the OS you are running on unless you add cross-platform tooling.
macOS: Code signing and notarization are not configured in this template; Gatekeeper may warn on first open until you sign/notarize for distribution.
├── electron/
│ ├── main.ts # Electron main process (window, IPC, OS stats)
│ └── preload.ts # Exposes electronAPI to the renderer (contextBridge)
├── src/
│ ├── main.tsx # Vite entry — mounts React
│ ├── App.tsx # Main UI
│ └── globals.css # Global styles + Tailwind
├── index.html # Vite HTML entry (loads /src/main.tsx)
├── vite.config.ts
├── tsconfig.json # Renderer TypeScript
├── tsconfig.electron.json # Electron main/preload TypeScript
└── package.json
Another app may be using the port. Either stop that process or change the port in vite.config.ts (server.port) and update electron/main.ts dev URL to match.
Blank page at http://localhost:5173/
Ensure index.html loads /src/main.tsx (React bootstrap), not Electron main-process code. The React entry should call createRoot and render <App />.
- Use a supported Node version (18+).
- Allow network access for the Electron download.
- On restricted networks, configure npm proxy settings if your organization requires it.
IPC is wired through preload.ts (electronAPI). Open the app with npm run dev (or a production build) for full desktop integration.
If a dependency or tool tries to clone via git@github.com and you see “Permission denied (publickey)”, either set up SSH keys or configure Git to use HTTPS for GitHub URLs.
This template does not require a .env file to run locally. If you add API keys or secrets later, use .env / .env.local and do not commit them (they are listed in .gitignore).
For architecture and feature overview, see README.md.