Ever since my arranged marriage to emacs at my first full-time programming job, I've felt wedded to terminals. Even when I'm not working on a remote server, I like using tmux to keep multiple workspaces alive without clutter my desktop with so many application windows.
Each of my projects tends to have at 3-7+ separate processes. At least: an editor, a shell for git and file management, and a server/application process. Usually there are also logs, tests, perhaps a ngrok tunnel, and especially with containized systems, some other automation scripts. Since arranging windows and invoking the same build commands for the 10,000th time sucks, I wrote a little bit of bash that, when I cd into a project directory (one that has a .tmux script), will check to see if a tmux session by the directory's name exists, attach to it if so, or run the .tmux script to create one if not. (It also supports multiple monitors.)
Below, you'll find the addition to .zshrc that handles the initiates process on directory-change, a tmux helper script, and a .tmux.example script that creates a new workspace.