Launchpad is an Electron tray application designed to streamline the management of local development servers. It allows developers to launch, monitor, and control various services such as Vite, FastAPI, Streamlit, and more from a single system tray icon on macOS or Windows.
Key Features:
Dark/Light Themes: Adapts to your system's theme for a seamless experience.
Live Log Viewer: Provides real-time logs with color-coding, search, and auto-scroll functionality.
Process Metrics: Displays CPU and memory usage for each running service.
Drag-and-Drop Reordering: Easily reorganize services within the interface.
Grouped Multi-Service Apps: Manage complex projects with multiple components as a single unit.
Auto-Start Functionality: Launch critical applications automatically at startup.
Global Shortcuts: Accessible via keyboard shortcuts for quick toggling (Cmd+Shift+L on macOS, Ctrl+Shift+L on Windows).
Port Detection: Automatically identifies available ports and displays running URLs.
Audience & Benefits:
Ideal for developers managing multiple services simultaneously, Launchpad offers a unified interface to simplify workflow. It reduces the need for juggling terminal tabs by providing a central hub for monitoring and controlling development servers. The app supports a wide range of technologies including Vite, Streamlit, FastAPI, Astro, Next.js, and more, each represented with a color-coded badge for easy identification.
Launchpad can be installed via winget, making it accessible and straightforward to set up on compatible systems.
README
Launchpad
A menu bar / system tray app for launching, managing, and monitoring your local development servers from a single icon -on macOS and Windows.
Start your Vite frontends, FastAPI backends, Streamlit dashboards, and any other dev server -all from one place. No more juggling terminal tabs.
Features
Menu bar / tray app -lives in your macOS menu bar or Windows system tray, always one click away
Start/stop/restart any dev server with one click
Grouped apps -manage multi-service projects (e.g. frontend + backend) as a single unit
Live logs -stream stdout/stderr with color-coded output, search, and auto-scroll
Port detection -automatically finds free ports and shows the running URL
Python venv detection -auto-activates venv/, .venv/, or env/ if found
> macOS note: If macOS shows a security warning, right-click the app and select "Open", or run:
> bash > xattr -cr /Applications/Launchpad.app >
Build from Source
Requires Node.js 18+ and npm.
git clone https://github.com/product-noob/launchpage-app.git
cd launchpage-app
npm install
npm run dev # Start dev server with HMR + Electron
Other commands
npm run build # Compile TypeScript + bundle with Vite
npm run package # Build + create macOS universal DMG
npm run package:win # Build + create Windows NSIS installer
npm run package:all # Build both macOS and Windows
npm run lint # Run ESLint
npm run test # Run tests
Adding Apps
Click the tray icon to open Launchpad
Click "Add App" at the bottom
Fill in the app name, path, start command, type, and port
Click "Add App" to save
For multi-service projects, toggle "Multi-service app" and add each service as a component.
Apps are stored in apps.json in your user data directory. See apps.example.json for the format.
Supported App Types
Vite, Streamlit, FastAPI, Astro, Node, Django, Flask, Express, Next.js, Nuxt, Remix, Svelte, Go, Rust, Ruby, Docker, Spring, Laravel, and a generic "other" type. Each gets its own color badge in the UI.
Tech Stack
Electron 40 -cross-platform desktop shell
React 19 -renderer UI
Vite 7 -bundler with HMR
Tailwind CSS v4 -styling
TypeScript -strict mode throughout
Architecture
Renderer (React in BrowserWindow)
↕ window.electronAPI (contextBridge)
Preload (electron/preload.ts)
↕ ipcRenderer.invoke / ipcMain.handle
Main Process (electron/main.ts + process-manager.ts)
↕ electron/platform.ts (cross-platform: spawn, kill, venv, terminal, metrics)
↕ child_process.spawn
Managed Apps (your dev servers)
Context isolation is enabled. The preload script exposes a typed API surface -no nodeIntegration.