Local multi-project hub for developers. Run npm scripts, git commands, and a built-in terminal — with categories, filters, and a Windows system tray. No accounts, no cloud, zero runtime npm dependencies for the server itself.
A project is any folder on disk.
Built with plain Node.js + a small optional .NET tray on Windows.
Repository: github.com/davidaganov/dock
- Node.js 18+
- Git (optional, for pull / fetch / checkout)
- Windows tray: .NET SDK 10+ (only to build the tray app)
start-win.bat| Command | What it does |
|---|---|
start-win.bat |
System tray (builds Dock.exe if missing) |
start-win.bat console |
Visible server window + browser |
start-win.bat server |
Node only (used by the tray) |
chmod +x start.sh
./start.sh background # background + browser
./start.sh foreground # current terminal
./start.sh stop
./start.sh statusOr:
npm startmacOS / Linux are not personally tested yet. If something breaks, feedback is welcome in Telegram: @davidaganov.
- Choose a workspace folder (e.g.
~/projectsorD:\projects) - Point to projects.json (see below)
- Add folders or create / clone projects into categories
Dock stores the project list in a projects.json file that is compatible with the Project Manager extension for VS Code / Cursor.
- Install Project Manager
- Set Project Manager: Projects Location to the folder that contains
projects.json(for exampleD:/projects) - Keep the list in sync from either side — Dock watches the file and picks up external edits
- Switch between projects quickly from the IDE sidebar
Categories in Dock map to Project Manager groups (e.g. 01. Work, 02. Personal).
- Shared project list with IDE Project Manager via
projects.json(watched live) - Category sidebar with drag-and-drop order and optional numeric prefixes (
01. …) - Table / card views, filters, and custom project order
- One-click npm / pnpm / yarn scripts
- Integrated terminal with session tabs and real-time SSE logs
- Create empty folders or clone repos into a category
- Windows system tray for background server + quick open
Local file dock-config.json stores paths, onboarding flag, and UI preferences.
Example: dock-config.example.json
{
"homePath": "D:\\projects",
"projectsJsonPath": "D:\\projects\\projects.json",
"onboardingCompleted": true,
"locale": "en"
}projects.json — array of projects with stable UUIDs (also consumed by Project Manager):
[
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "my-app",
"rootPath": "D:\\projects\\my-app",
"tags": ["personal"],
"enabled": true
}
]dock/
├── server.js # entry
├── src/ # Node server (see src/README.md)
│ ├── core/
│ ├── config/
│ ├── projects/
│ ├── runtime/
│ ├── system/
│ └── routes/
├── public/ # browser UI + locales
├── tray/ # Windows tray (.NET)
├── assets/ # logo + screenshot for README
├── start-win.bat
├── start.sh
└── dock-config.json # local only (gitignored)
npm install
npm start
npm run format # prettier
npm run format:check # prettier
npm run translate # polyglot-keeper
npm run tray:buildMIT © David Aganov

