DEV Community

Milind Singh
Milind Singh

Posted on

I built a native desktop dashboard because terminal tab hell was killing my vibe

look, i’m a vibe coder.
i don’t want to spend my limited brain cells opening 45 terminal tabs, cd-ing into 3 different directories, and running npm run dev, npm start, and npm run build every time i want to work on a project.
and i definitely don’t want to deal with EADDRINUSE: address already in use :::3000 because some ghost process from last night refuses to die.
i just want to write code and vibe.
so, i built DevDash—a native Windows desktop app that acts as a control center for all local projects.
DevDash Screenshot### 💡 What is this thing?
instead of typing terminal commands, you just drag or add your project folders. DevDash parses your package.json and gives you a nice clean GUI where you can:

  • run scripts with one click: click play to start npm run dev, click stop to kill it.
  • see logs in real-time: it streams the console logs directly into a beautiful built-in terminal window.
  • kill port conflicts instantly: if a port is blocked, it shows a red alert and lets you kill whatever is blocking it with a single click.
  • open in VS Code: one button opens the project directory directly in code.
  • edit .env files: a simple, secure text editor built right into the dashboard.
  • hide in tray: click the close button and the app runs in the system tray, keeping local servers alive in the background without cluttering the screen. ### 🛠️ The Stack i kept it simple but powerful:
  • Electron: for native desktop features, tray integration, and building a single portable .exe.
  • React + Vite: for a snappy frontend.
  • Express + Socket.IO: to manage the backend, run shell processes, and stream console output to the UI in real-time without polling.
  • Tailored Themes: because aesthetics are everything, i added Dracula, Nord, Monokai, Light, and Dark modes.

💀 The "Almost Gave Up" Moment: White Screen of Death

everything worked perfectly on my machine in dev. but the moment i tried packaging the app into a single .exe file, everything broke.
i ran the app, and... blank white screen. no errors, no logs, just vibes (bad ones). i was literally staring at a blank screen questioning my life choices.
turns out electron packages all backend files into a read-only archive file called .asar. my Express backend was trying to write project configurations to a file inside that read-only package. the app got mad, crashed the server, and killed the frontend.
i didn't really know how to fix it, so i did some digging and ended up passing electron's app.getPath('userData') over to the express server. apparently that forces the server to save the project list in the native Windows AppData folder instead of trying to write inside the packaged .exe.
honestly? i don't fully understand the black magic behind it, but the white screen is gone, it works, and your project settings don't get wiped when you update the app. we take those wins.

🚀 Try it out (it's free & open source)

i just released v2.0.0 on GitHub. you don't even need to install it—just download the portable .exe and run it.
👉 Grab the portable .exe on GitHub
i built this for myself to save my own sanity, but if you're a solo dev or just someone who hates managing terminal windows, i hope it helps you too.
let me know what you think, what features i should add next, or if you found any bugs! ✌️

Top comments (0)