Case Study · Our Own Product · macOS App
DevDock
A native macOS cockpit that finds every project on your machine and gives each one its own world: terminals, Claudes, browsers, files, env, database, deploys, notes and time tracking, in one window instead of forty. Built on Tauri and Rust. This website was built inside it.
// 01 · the problem, animated
Your desktop at 09h00 on a Monday
Fourteen-plus projects means Finder windows, terminals in the wrong directories, editors, browsers and a port conflict you find the hard way. DevDock’s reason to exist fits in one button. Press it.
$ npm run dev
Error: port 3000 in use$ cd ../which-project-was-this49 foldersSECRET_KEY=oops_visibleThis site can’t be reached$ git status
fatal: not a git repository// 02 · the dashboard
It found all 49 of your projects already
Point DevDock at a root folder and every repo becomes a card: framework auto-detected, port, git branch, running state, a screenshot thumbnail, and how much time you have spent inside it. Filter, favourite, hide, rescan. Blank Spaces hold the work that has no folder at all.
The header bar works everywhere: a ⌘K palette searching projects, files and commands, plus a colour picker, clipboard notes, responsive browser tools and layout switching.
// 03 · the pane system, the actual point
Claude, Claude Code, a terminal and a browser. One tab.
Any tab splits into panes, and any pane can be a terminal, a Claude Code session, claude.ai itself, a browser, or a game. Run multiple Claudes across multiple projects at the same time, each already in its own folder. This is the real layout from a real session.
How can I help you today?
Enhancing WAID for team collaboration
Last message 42 minutes ago
The real tab row per project: TERMINALS · BROWSERS · FILES · WAID · LOCAL AI · AGENTS · ENV · DATABASE · SCRIPTS · DEPLOY · SETTINGS, plus custom tabs you pin yourself (a Vercel dashboard, your webmail, anything with a URL).
// 04 · env editor, working slice
What you see IS the file on disk
NEXT_PUBLIC_SITE_URLhttps://demo.example.comRESEND_API_KEY••••••••••••SUPABASE_SERVICE_TOKEN••••••••••••Multiple .env files as tabs, smart paste, copy-as-.env, auto secret masking on KEY, TOKEN, SECRET and PASSWORD. No database mirror: the editor reads and writes the actual file. Demo values are fictional.
// 05 · break time, playable
“Something to do while it builds.”
The arcade ships 17+ developer games across Classic, Action and Puzzle, with per-game leaderboards: Package Man (“Pac-Man · install the deps”, top score 4,220), Bracket Drop (Tetris), Codeword (Wordle), Hack-a-Bug (type the bugs, dodge features), Dependency Asteroids, Suika Code. Here is Code Eater: Snake, eat the semicolons. Arrow keys or the buttons.
Games are React components inside the pane system, which means a game can sit in a pane right next to your running build. High scores persist in SQLite.
// 06 · everything else in the window
// 07 · engineering notes
$ devdock –stack
tauri 2.0 · rust · react 18 · typescript · zustand · xterm.js · axum · sqlite · css-modules
$ devdock –stats
projects_found: 49 · dmg_size: ~80MB · warm_build: ~2min · games: 17+ · sprint_tickets: 51+
$ █
// 08 · screens
Two real captures below (the arcade and the colour picker). The rest await sanitised shots: the originals show live client project names and real env values, and those never go on a portfolio page.

