Skip to content

Commit 69c5540

Browse files
authored
Improve setup guides and Node.js version management across all platforms (#861)
### Summary & Motivation Testing on a fresh Ubuntu 24.04 ARM installation revealed that the existing Linux/WSL2 guide was outdated and incomplete. The recent migration from SQL Server to PostgreSQL removed the x86 dependency, making it possible to run the full solution on ARM-based Linux virtual machines — enabling Claude Code in isolated environments. - Rewrite the Linux setup guide with tested step-by-step instructions for Ubuntu/Debian, including Docker, HTTPS certificate trust, and Snap Chromium support - Lower the Docker minimum version to 27.0.0 for Ubuntu 24.04 compatibility - Ignore HTTPS errors in Playwright on both Windows and Linux, where bundled browsers do not trust the ASP.NET dev certificate - Simplify the Node.js version check to use `node --version` directly instead of scanning version manager directories, and accept any matching major version >= [`.node-version`](./application/.node-version) - Auto-install the correct Node.js version via fnm when present but the required version is missing - Recommend fnm as a Node.js version manager across all platform guides, with direct Node.js installation as an alternative - Update `.node-version` to 24.14.0 - Add clone command and repository navigation instructions to the getting started steps - Restructure Mac and Windows guides with numbered steps and separate Node.js installation step ### Checklist - [x] I have added tests, or done manual regression tests - [x] I have updated the documentation, if necessary
2 parents f2e05d2 + 9f7e451 commit 69c5540

File tree

7 files changed

+163
-116
lines changed

7 files changed

+163
-116
lines changed

README.md

Lines changed: 89 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,20 @@ For development, you need .NET, Docker, and Node. And GitHub and Azure CLI for s
6666
winget install Microsoft.DotNet.SDK.10
6767
winget install Git.Git
6868
winget install Docker.DockerDesktop
69-
winget install OpenJS.NodeJS
7069
winget install Microsoft.AzureCLI
7170
winget install GitHub.cli
7271
```
7372

73+
3. Install Node.js — the version must match [`.node-version`](./application/.node-version). We recommend [fnm](https://github.com/Schniz/fnm) which auto-installs the exact version via the Developer CLI. When using an IDE like Rider, ensure the active fnm version matches [`.node-version`](./application/.node-version).
74+
75+
```powershell
76+
# Option A: fnm (recommended)
77+
winget install Schniz.fnm
78+
79+
# Option B: Node.js directly
80+
winget install OpenJS.NodeJS
81+
```
82+
7483
</details>
7584
7685
<details>
@@ -79,93 +88,119 @@ For development, you need .NET, Docker, and Node. And GitHub and Azure CLI for s
7988
8089
Open a terminal and run the following commands (if not installed):
8190
82-
- Install [Homebrew](https://brew.sh/), a package manager for Mac
83-
- `brew install --cask dotnet-sdk`
84-
- `brew install --cask docker`
85-
- `brew install git node azure-cli gh`
91+
1. Install [Homebrew](https://brew.sh/), a package manager for Mac
92+
93+
2. Install packages
94+
95+
```bash
96+
brew install --cask dotnet-sdk
97+
brew install --cask docker
98+
brew install git azure-cli gh
99+
```
100+
101+
3. Install Node.js — the version must match [`.node-version`](./application/.node-version). We recommend [fnm](https://github.com/Schniz/fnm) which auto-installs the exact version via the Developer CLI. When using an IDE like Rider, ensure the active fnm version matches [`.node-version`](./application/.node-version).
102+
103+
```bash
104+
# Option A: fnm (recommended)
105+
brew install fnm
106+
107+
# Option B: Node.js directly
108+
brew install node
109+
```
86110

87111
</details>
88112

89113
<details>
90114

91-
<summary>Install prerequisites for Linux/WSL2</summary>
115+
<summary>Install prerequisites for Linux (Ubuntu/Debian)</summary>
92116

93117
Open a terminal and run the following commands (if not installed):
94118

95-
- Install Wget
119+
1. Install basic tools
96120

97-
```bash
98-
sudo apt update && sudo apt-get install wget -y
99-
```
121+
```bash
122+
sudo apt update && sudo apt install -y git wget curl libnss3-tools
123+
```
100124

101-
- Install Microsoft repository
125+
2. Add Microsoft package repository
102126

103-
```bash
104-
source /etc/os-release
105-
wget https://packages.microsoft.com/config/$ID/$VERSION_ID/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
106-
sudo dpkg -i packages-microsoft-prod.deb
107-
rm packages-microsoft-prod.deb
108-
```
127+
```bash
128+
source /etc/os-release
129+
wget https://packages.microsoft.com/config/$ID/$VERSION_ID/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
130+
sudo dpkg -i packages-microsoft-prod.deb
131+
rm packages-microsoft-prod.deb
132+
```
109133

110-
- Install Node repository
134+
3. Install .NET SDK and Docker
111135

112-
```bash
113-
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -
114-
```
136+
```bash
137+
sudo apt-get update && sudo apt-get install -y dotnet-sdk-10.0 docker.io docker-compose-v2
138+
```
115139

116-
- Install GitHub Package repository
140+
```bash
141+
sudo systemctl enable --now docker
142+
sudo usermod -aG docker $USER
143+
```
117144

118-
```bash
119-
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
120-
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
121-
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
122-
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
123-
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
124-
```
145+
4. Install Node.js — the version must match [`.node-version`](./application/.node-version). We recommend [fnm](https://github.com/Schniz/fnm) which auto-installs the exact version via the Developer CLI. When using an IDE like Rider, ensure the active fnm version matches [`.node-version`](./application/.node-version).
125146

126-
- Update packages
147+
```bash
148+
# Option A: fnm (recommended)
149+
curl -fsSL https://fnm.vercel.app/install | bash
127150

128-
```bash
129-
sudo apt-get update
130-
```
151+
# Option B: Node.js directly
152+
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -
153+
sudo apt-get install -y nodejs
154+
```
131155

132-
- Install .NET SDK 10.0, Node, GitHub CLI
156+
5. Trust the HTTPS development certificate
133157

134-
```bash
135-
sudo apt-get install -y dotnet-sdk-10.0 nodejs gh
136-
```
158+
```bash
159+
echo 'export SSL_CERT_DIR="$HOME/.aspnet/dev-certs/trust:${SSL_CERT_DIR:-/usr/lib/ssl/certs}"' >> ~/.bashrc
160+
```
137161

138-
- Install Azure CLI
162+
```bash
163+
source ~/.bashrc
164+
```
139165

140-
```bash
141-
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
142-
```
166+
```bash
167+
dotnet dev-certs https --trust
168+
```
143169

144-
- Install Certificate
145-
```bash
146-
dotnet tool update -g linux-dev-certs
147-
dotnet linux-dev-certs install
148-
```
170+
6. **Log out and log back in** to apply Docker group and shell configuration changes.
149171

150-
- Trust Certificates
172+
7. (Optional) If using Snap Chromium, trust the certificate in its sandbox
151173

152-
```bash
153-
cd /usr/local/share/ca-certificates/aspnet-dev-{Environment.UserName}.crt && explorer.exe .
154-
# Install self signed root certificate
174+
```bash
175+
certutil -d sql:$HOME/snap/chromium/current/.pki/nssdb -L >/dev/null 2>&1 || (mkdir -p $HOME/snap/chromium/current/.pki/nssdb && certutil -d sql:$HOME/snap/chromium/current/.pki/nssdb -N --empty-password)
176+
dotnet dev-certs https --trust
177+
```
155178

156-
# Open the windows certificate manager and import root certificate
157-
# "\\wsl.localhost\Ubuntu-20.04\home\maximus\.aspnet\dev-certs\https\platformplatform.pfx"
158-
```
179+
8. (Optional) Install GitHub CLI and Azure CLI (needed for CI/CD setup)
180+
181+
```bash
182+
(type -p wget >/dev/null || (sudo apt update && sudo apt-get install wget -y)) \
183+
&& sudo mkdir -p -m 755 /etc/apt/keyrings \
184+
&& wget -qO- https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \
185+
&& sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \
186+
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null
187+
sudo apt-get update && sudo apt-get install -y gh
188+
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
189+
```
159190

160191
</details>
161192

162193
## 1. Clone the repository
163194

195+
```bash
196+
git clone https://github.com/platformplatform/PlatformPlatform.git
197+
```
198+
164199
We recommend you keep the commit history, which serves as a great learning and troubleshooting resource. 😃
165200

166201
## 2. (Optional) Install the Developer CLI
167202

168-
The PlatformPlatform CLI provides convenient commands for common tasks. Install it globally to use the `pp` command from anywhere in your terminal.
203+
The PlatformPlatform CLI provides convenient commands for common tasks. From the cloned repository, install it globally to use the `pp` command from anywhere in your terminal.
169204

170205
```bash
171206
cd developer-cli

application/.node-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
24.10.0
1+
24.14.0

application/package-lock.json

Lines changed: 3 additions & 26 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)