$root = Split-Path -Parent $MyInvocation.MyCommand.Path function Start-CmdProcess { param ( [string]$WorkingDirectory, [string]$Command ) $escapedDir = $WorkingDirectory.Replace('"', '""') $fullCommand = "cd /d `"$escapedDir`" && $Command" Start-Process -FilePath "cmd.exe" -ArgumentList "/k", $fullCommand -WorkingDirectory $WorkingDirectory } Start-CmdProcess -WorkingDirectory $root -Command "npm run dev --workspace backend" Start-CmdProcess -WorkingDirectory $root -Command "npm run dev --workspace frontend" Start-CmdProcess -WorkingDirectory (Join-Path $root "ingestion-service") -Command "uvicorn ingestion.main:app --reload --port 8000"