Development Setup for Windows
Please read carefully and execute all commands in order.
👉 We will use WSL (Windows Subsystem for Linux) so your environment behaves like macOS/Linux.
GitHub Account
- Create an account: https://github.com/join
- Add your name + profile picture: https://github.com/settings/profile
- Enable 2FA
Install WSL (Linux on Windows)
Windows and WSL are two different environments.
- Windows = your operating system
- WSL = a Linux machine inside Windows
👉 From this point forward, we will do all development inside WSL
Open PowerShell (as Administrator) and run:
wsl --install
Restart your computer when prompted.
Launch WSL
Open Ubuntu from the Start Menu.
You’ll be asked to:
- create a username
- create a password
👉 This is your Linux environment.
From now on:
👉 All commands run inside the WSL (Ubuntu) terminal
NOT in PowerShell or Command Prompt.
Update system packages
Inside WSL:
sudo apt update && sudo apt upgrade -y
Install essential tools
sudo apt install -y build-essential curl file git
Oh My Zsh
Copy and paste the commands to WSL:
sudo apt install zsh -y
then,
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
Press Y if prompted.
Visual Studio Code
Install for Windows:
👉 https://code.visualstudio.com
Install WSL Extension
Open VS Code → Extensions → install:
- Remote - WSL
Open VS Code from WSL
Inside WSL terminal:
code .
👉 This connects VS Code to Linux automatically
VS Code Extensions
Run inside WSL terminal:
code --install-extension dbaeumer.vscode-eslint
code --install-extension esbenp.prettier-vscode
code --install-extension ms-python.python
code --install-extension ms-python.vscode-pylance
code --install-extension ms-toolsai.jupyter
code --install-extension alexcvzz.vscode-sqlite
Disable AI Features (for now)
Open VS Code:
Ctrl + Shift + P- Search:
aifeatures - Enable Disable and hide built-in AI features
GitHub CLI (gh) Setup (SSH)
Copy and paste these command into WSL:
sudo apt install gh -y
1. Login with gh
Login. 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)
Install dependencies:
sudo apt install -y make build-essential libssl-dev zlib1g-dev \
libbz2-dev libreadline-dev libsqlite3-dev llvm libncurses5-dev \
libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev
Install pyenv:
curl https://pyenv.run | bash
Add to shell:
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(pyenv init -)"' >> ~/.bashrc
exec bash
Install Python:
pyenv install 3.12
pyenv global 3.12
Check:
python --version
Python Tools
pip install --upgrade pip
pip install virtualenv pipx
pipx ensurepath
Node.js (nvm)
Install nvm:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
exec bash
Install Node:
nvm install 20
nvm use 20
Check:
node -v
npm -v
SQLite
sudo apt install sqlite3 -y
sqlite3 --version
PostgreSQL
sudo apt install postgresql postgresql-contrib -y
Start service:
sudo service postgresql start
Test:
psql -U postgres
Exit:
\q
Final Check
python --version
node -v
npm -v
psql --version
sqlite3 --version
git --version
You’re Done!
Your machine is now ready for:
👉 All running inside Linux (WSL)