# Start_Windows - WebServer.ps1 # Run this script with: # Set-ExecutionPolicy Unrestricted -Scope Process; .\Start_Windows -WebServer.ps1 Write-Output " =============================== " Write-Output " Re-Building ReactJS App " Write-Output " =============================== " # --- Define paths --- $venvFolder = "Borealis-Workflow-Automation-Tool" # Virtual environment root. $dataSource = "Data" # Contains server.py and optionally WebUI. $dataDestination = "$venvFolder\Borealis" # Data folder copy destination in the venv. $customUIPath = "$dataSource\WebUI" # Custom UI folder source in the project root. $webUIDestination = "$venvFolder\web-interface" # Destination for the React UI in the venv. # If a custom UI folder exists at \Data\WebUI, copy its contents over (overwrite defaults). if (Test-Path $customUIPath) { Write-Output "Borealis ReactJS Data Found at '$customUIPath'. Overwriting ReactJS App Files..." Copy-Item -Path "$customUIPath\*" -Destination $webUIDestination -Recurse -Force } else { Write-Output "No custom UI folder found at '$customUIPath'. Using default ReactJS app." } # --- Activate virtual environment --- Write-Output "Activating Virtual Python Environment..." . "$venvFolder\Scripts\Activate" # --- Remove Existing / Previous ReactJS App Build folder --- if (Test-Path $dataDestination) { Remove-Item -Recurse -Force $venvFolder\web-interface\build } # --- Build the React (UI) app in the web-interface folder if needed --- $packageJsonPath = Join-Path $webUIDestination "package.json" $buildFolder = Join-Path $webUIDestination "build" if (-not (Test-Path $buildFolder)) { if (Test-Path $packageJsonPath) { Write-Output "React UI build not found in '$webUIDestination'. Installing dependencies and building the React app..." Push-Location $webUIDestination Write-Output " =============================== " Write-Output " Installing NPM Packages " Write-Output " =============================== " npm install --no-fund --audit=false # Ensure react-flow-renderer is installed Write-Output "Installing React Flow..." npm install reactflow --no-fund --audit=false # Install Material UI Library Write-Output "Installing Material UI Library..." npm install @mui/material @emotion/react @emotion/styled --no-fund --audit=false npm run build Pop-Location } else { Write-Output "No package.json found in '$webUIDestination'; skipping npm install/build." } } else { Write-Output "React UI build found. Skipping npm install/build." } # --- Change directory to the virtual environment root --- Push-Location $venvFolder Write-Output "Current working directory: $(Get-Location)" $expectedBuildPath = Join-Path (Get-Location) "web-interface\build" Write-Output "Looking for build folder at: $expectedBuildPath" # --- Start the Flask server (server.py is inside Borealis folder) --- Write-Output " =============================== " Write-Output " Launching Borealis " Write-Output " =============================== " Write-Output "Starting the Flask server..." python "Borealis\server.py" # --- Return to original directory and deactivate virtual environment --- Pop-Location deactivate