Somerset West, Western Cape, South Africa

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.

ClientInternal product
Status● In build ~85%, daily driver
PlatformNative macOS · signed .dmg · ~80MB
EngineTauri 2.0 · Rust · React
Break time17+ arcade games with leaderboards

// 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.

Terminal · zsh$ npm run dev
Error: port 3000 in use
Terminal · zsh$ cd ../which-project-was-this
Finder · Projects49 folders
TextEdit · .env.localSECRET_KEY=oops_visible
Browser · localhost:???This site can’t be reached
Terminal · zsh$ git status
fatal: not a git repository
DevDock
● dezignza-wp :1212 ● newberry :3009 ● noupoort :2020 ● waid :3000
Terminals · Browsers · Files · Env · Agents · Deployevery terminal opens in the right folder, ports auto-detected, time tracked

// 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.

NEXT.JSdezignza-wp:1212 · ● Running⏱ 1h 59m today
NEXT.JSnewberry:3009 · Stopped 2h ago⏱ 50m today
VITEdevdock● main · Stopped⏱ 3h 7m today
REACThyperos:9876 · Stopped⏱ 37m today
WORDPRESSnew-wordpress:3098 · Stopped⏱ 18m today
SPACE3D in BlenderNo folder linkednotes + terminals only

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.

1 ROW · 3 PANES▦ ▤ ▥ · + ADD
◐ CLAUDEhttps://claude.ai

How can I help you today?

Enhancing WAID for team collaboration
Last message 42 minutes ago

▣ TERMINALCLAUDE · DEV · BUILD · LINT · TYPECHECK · GIT PULL
✳ recap: all 13 tickets done, committed, pushed to main> apply the migrations to the supabase
▣ TERMINALwhatamidoing %
$ curl -s api.resend.com/audiences{ “object”: “list”, “data”: […] }

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

DevDock
DEZIGNZA-WPWORDPRESS:1212● main⏱ 5m▶ PLAY
dezignza-wp $ npx wp-now start –port=1212Server running at http://localhost:1212dezignza-wp $ claudeClaude Code session started…

// 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.

CODE EATERSCORE 0 · BEST 0

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

Filesa file browser per project with a code editor and rendered markdown preview
WAID embeddedthe project management board inside each project, tickets handed straight to agents
Local AI + AgentsOllama models locally, plus multi-provider agent sessions with cost tracking
Database + DeployDB tooling and Local, Staging, Production deploy targets: SSH, SFTP, cPanel, Vercel
Scriptspackage.json scripts auto-detected as buttons, quick actions (VS Code, Finder, browser, git, Claude), custom labelled commands per project
Time trackinga running timer per project, totals on every dashboard card
Notessaved across all projects or scoped to one, always a keystroke away
Toolbox⌘K command palette, colour picker with pick-from-screen, responsive browser presets, deep links (devdock://project/waid) for Stream Deck and Raycast

// 07 · engineering notes

fix(wkwebview): dnd-kit fails on upward drags in macOS WebView → replaced with native HTML5 drag events
fix(shell): Tauri processes do not inherit the user PATH → every command runs through zsh -l -c
fix(clipboard): navigator.clipboard dead in WKWebView → tauri-plugin-clipboard-manager
feat(daemon): a Rust sidecar keeps AI agent sessions alive independent of the app lifecycle
feat(remote): Axum server on Tauri’s own runtime + PIN pairing, building toward the phone thin client
design: the app ships in the DezignZA design system: navy #1E2235, teal #00BCD4 as the only interactive accent, 2px corners

$ 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.

The arcade menu: categories and leaderboards
The arcade menu: categories and leaderboards
The colour picker with pick-from-screen
The colour picker with pick-from-screen
SCREENSHOT: Dashboard project grid with frameworks, ports and time tracked
Dashboard project grid with frameworks, ports and time tracked
SCREENSHOT: Three panes in one tab: claude.ai, Claude Code, terminal
Three panes in one tab: claude.ai, Claude Code, terminal
SCREENSHOT: ENV editor with .env file tabs and smart paste
ENV editor with .env file tabs and smart paste
SCREENSHOT: FILES tab rendering a markdown file with preview
FILES tab rendering a markdown file with preview
SCREENSHOT: BROWSERS tab with responsive UA switching on a live site
BROWSERS tab with responsive UA switching on a live site
SCREENSHOT: SCRIPTS tab: quick actions, package.json scripts, custom commands
SCRIPTS tab: quick actions, package.json scripts, custom commands
SCREENSHOT: WAID board embedded inside a project
WAID board embedded inside a project
SCREENSHOT: Package Man fullscreen with the high score bar
Package Man fullscreen with the high score bar
SCREENSHOT: Remote Access settings with paired devices
Remote Access settings with paired devices
SCREENSHOT: Onboarding: point us at your projects
Onboarding: point us at your projects

Want a tool this custom for your workflow? That is literally our thing.