Development Setup on MacOS
Please read carefully and execute all commands in order.
GitHub Account
-
Create an account: https://github.com/join
-
Add your name + profile picture: https://github.com/settings/profile
-
Enable 2FA:
https://docs.github.com/en/authentication/securing-your-account-with-two-factor-authentication-2fa
Closing a window ≠ quitting the app.
Use:
-
Cmd + Q
or -
Menu → Quit
Command Line Tools
xcode-select --install
If already installed → continue.
Homebrew
Open the terminal. To install type:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Then:
brew --version
If you see something like Homebrew 5.1.0, then you're fine.
If you get command not found typeL:
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
Then update and install necessary software:
brew update
brew upgrade git || brew install git
brew upgrade gh || brew install gh
brew upgrade wget || brew install wget
brew upgrade imagemagick || brew install imagemagick
brew upgrade jq || brew install jq
brew upgrade openssl || brew install openssl
Visual Studio Code
Install VS Code from the terminal:
brew install --cask visual-studio-code
Launch VS Code:
code
VS Code Extensions
Install the VS Code extensions by typing the following in your terminal:
code --install-extension ms-vscode.sublime-keybindings
code --install-extension emmanuelbeziat.vscode-great-icons
code --install-extension github.github-vscode-theme
code --install-extension MS-vsliveshare.vsliveshare
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension ms-python.python
code --install-extension ms-toolsai.jupyter
code --install-extension ms-python.vscode-pylance
code --install-extension alexcvzz.vscode-sqlite
Disable AI Features (for now)
From the VS Code window:
-
Cmd + Shift + P -
Search:
aifeatures -
Enable Disable and hide built-in AI features
Terminal Setup → iTerm2 (Recommended)
The default macOS Terminal is fine… but once you’ve used iTerm2, it’s hard to go back.
Install iTerm2
brew install --cask iterm2
Launch it:
open -a iTerm
Suggested iTerm2 Settings
Inside iTerm2:
Open the settings ⌘ + ,
1. Theme (Dark + readable)
- Profiles → Colors
- Pick: “Dracula” or “Solarized Dark”
2. Font (important)
- Profiles → Text
- Font:
MesloLGS NF(great with Oh My Zsh)
Install the font if needed:
brew install font-meslo-lg-nerd-font
3. Window size
- Profiles → Window
- Columns:
200 - Rows:
50
4. Optional but worth it
- Enable “Reuse previous session’s directory”
- Set Natural Text Editing (makes word jumping work like VS Code)
Oh My Zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Press Y if prompted.
GitHub CLI (gh) Setup (SSH)
We’ll use GitHub CLI to connect your machine to GitHub using SSH.
This lets you:
- push/pull without passwords
- avoid token prompts
- use GitHub directly from the terminal
1. Login with gh
Copy and paste the following into your terminal. DO NOT edit the email field:
gh auth login -s 'user:email' --git-protocol ssh -w
2. You’ll be asked a few questions:
“What account do you want to log into?”
- Choose:
GitHub.com
“What is your preferred protocol?”
- Use the arrow keys to choose:
SSH
Why?
- No passwords when pushing
- More stable long-term workflow
“Generate a new SSH key?”
- Press
Enter(Yes)
👉 If you already have a key:
- Select your existing key instead
“Enter a passphrase”
- Optional, but recommended if you're security conscious
- This protects your key if your machine is compromised
- Press
enterwith the field blank to proceed without a passphrase
“Title for your SSH key”
- Default is fine (e.g.
GitHub CLI), pressenter
3. Browser authentication
You’ll see:
! First copy your one-time code: XXXX-XXXX
- Copy the code
- Press
Enter - Browser opens → paste code → approve access
👉 This creates a secure auth token stored locally (GitHub CLI)
4. Verify everything worked
gh auth status
You should see:
✓ Logged in to github.com as <your-username>
Python (pyenv)
We use pyenv instead of system Python.
Install pyenv
From the terminal type:
brew install pyenv
Add to shell:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc
exec zsh
Install Python
pyenv install 3.12.2
pyenv global 3.12.2
Check:
python --version
Python Tools
From the terminal type:
pip install --upgrade pip
pip install virtualenv pipx
pipx ensurepath
Useful tools:
pip install black flake8 pytest ipython
Node.js (nvm)
Install nvm from the terminal:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | zsh
exec zsh
Check:
nvm -v
Install Node:
nvm install 20
nvm use 20
Check:
node -v
npm -v
SQLite
From the terminal type:
brew install sqlite
sqlite3 --version
PostgreSQL
From the terminal type:
brew install postgresql@15 libpq
brew link --force libpq
brew services start postgresql@15
Test:
psql -d postgres
Exit with:
\q
Final Check
Check everything manually from the terminal:
python --version
node -v
npm -v
yarn -v
psql --version
sqlite3 --version
git --version
You’re Done!
Your machine is now ready for: