Ever spent 10 minutes debugging an error only to realize port 3000 was held hostage by a ghost Node.js process you thought you killed an hour ago?
Or opened your terminal and struggled to remember which nested subfolder you cloned a repository to last week?
These daily developer friction points led me to build DevDeck — a fast, open-source desktop command center designed to scan workspaces, run scripts, and kill ghost processes with a single click.
Here is why I chose Rust + Tauri over Electron and how the tool was architected.
⚡ 1. Why Not Electron? (The Resource Dilemma)
Developer utilities like command centers, process inspectors, and launchers need to stay open in the background all day.
If built with Electron:
- 🛑 RAM Usage: 250MB – 450MB just to display a simple dashboard (shipping a full Chromium + Node runtime).
- 🛑 Binary Size: 80MB+ installer. By building with Tauri + Rust:
- 🚀 RAM Usage: ~20MB – 35MB idle (using native OS WebViews: WebView2 on Windows, WebKitGTK on Linux, WKWebView on macOS).
- 🚀 Binary Size: Under 10MB installer.
* 🚀 Native OS Access: Direct access to system processes, PIDs, and disk scans via compiled Rust binaries.
🛠️ 2. Core Features & Implementation
A. Instant Workspace Scanner (ignore & walkdir in Rust)
DevDeck indexes your projects across multiple drives without lag. Instead of running a heavy recursive JavaScript scan, we delegate filesystem traversal to Rust using the ignore crate (respecting .gitignore and skipping node_modules / .git folders):
` use std::path::Path;
use ignore::WalkBuilder;
use serde::Serialize;
pub struct ProjectMetadata {
pub name: String,
pub path: String,
pub project_type: String, // "Node", "Rust", "Python", etc.
}
pub fn scan_workspace(root_dir: String) -> Vec {
let mut projects = Vec::new();
for result in WalkBuilder::new(&root_dir).max_depth(Some(4)).build() {
if let Ok(entry) = result {
let path = entry.path();
if path.file_name() == Some(std::ffi::OsStr::new("package.json")) {
projects.push(ProjectMetadata {
name: entry.path().parent().unwrap().file_name().unwrap().to_string_lossy().into(),
path: entry.path().parent().unwrap().to_string_lossy().into(),
project_type: "Node.js".into(),
});
}
}
}
projects
} `
B. One-Click Ghost Process Killer
When port 3000, 5173, or 8080 is blocked, finding and terminating the process via terminal commands (netstat, lsof -i, kill -9) interrupts your flow.
In DevDeck, the Rust backend queries listening sockets and exposes a 1-click kill function:
`rust
use sysinfo::{Pid, ProcessExt, System, SystemExt};
pub fn kill_process_by_pid(pid: usize) -> bool {
let mut sys = System::new_all();
sys.refresh_all();
if let Some(process) = sys.process(Pid::from(pid)) {
return process.kill();
}
false
}`
C. Live Script Runner with Real-Time Output Streaming
DevDeck parses package.json scripts and Cargo.toml targets, letting you execute commands and stream stdout/stderr live to a unified terminal pane inside the app using Tauri event emitters.
🎨 3. The Frontend: Zero-Bloat Glassmorphism
To keep DevDeck blazing fast, the UI was crafted using Vanilla HTML, CSS (Glassmorphism), and modern JavaScript with zero heavy framework overhead. The interface stays buttery smooth while drawing negligible CPU resources in the background.
📦 4. Cross-Platform & Open Source
DevDeck is 100% open-source and natively built for Windows, macOS, and Linux.
🌐 Download & Release Assets: Download DevDeck
💻 Source Code: github.com/KING-UPE/DevDeck
👨💻 Author & Portfolio: Upendra Dasanayaka
What features would make your development workflow faster? Let me know in the comments or contribute on GitHub! US THIS PERFECTLY OUTOUTED?
Top comments (0)