A clean Windows workstation for web, backend and mobile work.
A practical setup for Windows 11 developers who need PowerShell, Windows Terminal, Git, VS Code, Cursor, Node.js, pnpm, Docker Desktop, WSL 2 and optional Android or Flutter tooling without turning the machine into a random toolbox.
Install from trusted sources
Use WinGet and official publisher pages so the workstation stays auditable and easy to rebuild.
Support hybrid projects
Prepare Windows-native tools, WSL 2, Docker Desktop and Node.js workflows for real project work.
Keep Windows clean
Avoid random installers, duplicate runtimes and unreviewed utility scripts that become hard to maintain.
Build the workstation in layers
The safest Windows setup starts with the system shell, then Git and editors, then runtime tools, containers, Linux compatibility and optional mobile tooling.
01 · Update Windows first
Run Windows Update before installing developer tools so WSL, virtualization and security components are current.
02 · Prepare terminal and PowerShell
Use Windows Terminal with a recent PowerShell profile instead of mixing many console shortcuts.
03 · Install Git and editors
Install Git, VS Code and Cursor from trusted sources, then keep extensions focused on the projects you actually maintain.
04 · Install Node.js and pnpm
Use an LTS Node.js version and Corepack or pnpm directly, then verify both before opening a monorepo.
05 · Add Docker Desktop and WSL 2
Docker Desktop and WSL 2 should be configured deliberately because they affect memory, disk usage and network behavior.
06 · Add mobile tools only when needed
Android Studio and Flutter are useful for mobile work, but they add SDKs, emulators and background services.
Baseline Windows installs
These commands are a practical starting point. Review each package ID and source in WinGet before running it on a professional machine.
winget source updateRefreshes WinGet package sources before searching or installing developer tools.
winget install --id Microsoft.WindowsTerminal -eInstalls Windows Terminal when it is not already available on the machine.
winget install --id Microsoft.PowerShell -eInstalls the current cross-platform PowerShell package for a consistent shell experience.
winget install --id Git.Git -eInstalls Git for Windows, including the command-line tools needed by editors and project scripts.
winget install --id Microsoft.VisualStudioCode -eInstalls VS Code from the Microsoft package entry instead of an unknown download mirror.
winget search CursorSearch first, then install Cursor only from a verified publisher entry or the official publisher page.
winget install --id OpenJS.NodeJS.LTS -eInstalls the LTS Node.js package suitable for most Next.js, NestJS and TypeScript projects.
winget install --id pnpm.pnpm -eInstalls pnpm directly if the workstation does not rely on Corepack-managed package managers.
winget install --id Docker.DockerDesktop -eInstalls Docker Desktop, which should then be configured for WSL 2 integration when relevant.
WSL 2, Docker Desktop and Linux workflows
Windows can support serious Linux-oriented development, but the boundary between Windows paths, WSL filesystems and Docker volumes must stay clear.
wsl --installEnables WSL and installs a default Linux distribution on machines where WSL is not already configured.
wsl --statusShows the default WSL version and helps confirm that the machine is using WSL 2.
wsl --list --verboseLists installed distributions and their version so project teams can spot inconsistent environments.
Docker Desktop WSL integrationEnable integration only for the distributions used by development projects to reduce surprise behavior.
Project files inside WSL when possible
Linux-heavy projects usually perform better when dependencies and node_modules live in the WSL filesystem.
Publisher sources to prefer
Windows workstations are easier to support when core tools come from WinGet entries or publisher pages that can be verified later.
Microsoft documentation
Use Microsoft guidance for Windows Terminal, PowerShell, WSL 2, virtualization and Windows developer settings.
Git for WindowsUse the official Git for Windows package or a verified WinGet entry for Git installation.
VS Code and Cursor
Install editors from their publisher channels and keep extensions limited to the project stack.
Node.js and pnpmPrefer the Node.js LTS package and a documented pnpm strategy, either through Corepack or a verified package.
Docker DesktopInstall from the publisher package and review licensing or organizational usage constraints.
Android Studio and Flutter
Use official mobile tooling sources when the workstation needs Android, emulator or cross-platform validation.
Android Studio and Flutter when the project needs them
Mobile tooling is valuable for Android or cross-platform validation, but it should not be installed just to make the workstation look complete.
winget install --id Google.AndroidStudio -eInstalls Android Studio for Android SDK management, emulators and mobile debugging.
winget search FlutterCheck the current Flutter package source, then install from an official or verified channel.
Android SDK location
Keep SDK paths documented so shells, editors and CI-like scripts can find the same tools.
flutter doctorUse this only after Flutter is installed to identify missing Android, license or device configuration.
Keep the workstation maintainable
A professional Windows machine should be boring in the right ways: clear sources, known tools, reviewed scripts and repeatable checks.
Avoid random optimizer tools
Do not install registry cleaners, driver bundles or performance boosters that cannot be audited.
Prefer one package source per tool
Mixing MSI installers, WinGet packages and archive downloads for the same tool makes updates harder to reason about.
Document manual installers
If a tool cannot be installed through WinGet, record where it came from and why it is needed.
Review scripts before elevation
Run administrator scripts only after reading the commands and understanding which files, services or settings they touch.
Post-install verification
Do not keep installing tools if the baseline checks fail. Fix the environment while the cause is still easy to isolate.
$PSVersionTable.PSVersion
Confirms the PowerShell version available in the current terminal session.
git --versionChecks Git availability before cloning or opening repositories.
code --versionConfirms VS Code command-line integration if the editor was installed with shell support.
node -v && pnpm -vVerifies the JavaScript runtime and package manager used by projects.
docker --version && docker compose versionChecks that Docker and Compose are reachable before starting local services.
wsl --list --verboseConfirms installed Linux distributions and whether they are running on WSL 2.
Living toolkit
This section will be progressively enriched with real tools.
Packs, scripts and experiments will be documented with practical usage, clear limits and engineering context.