129 lines
4.6 KiB
PowerShell
129 lines
4.6 KiB
PowerShell
#!/usr/bin/env pwsh
|
|
# ColaFlow Development Environment Startup Script
|
|
# This script starts both backend API and frontend web application
|
|
|
|
Write-Host "========================================" -ForegroundColor Cyan
|
|
Write-Host " ColaFlow Development Environment" -ForegroundColor Cyan
|
|
Write-Host "========================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
|
|
# Get the script directory (project root)
|
|
$ProjectRoot = $PSScriptRoot
|
|
|
|
# Function to check if a port is in use
|
|
function Test-Port {
|
|
param (
|
|
[int]$Port
|
|
)
|
|
$connection = Test-NetConnection -ComputerName localhost -Port $Port -WarningAction SilentlyContinue -InformationLevel Quiet
|
|
return $connection
|
|
}
|
|
|
|
# Function to start backend
|
|
function Start-Backend {
|
|
Write-Host "[Backend] Starting ColaFlow API..." -ForegroundColor Yellow
|
|
|
|
# Check if backend port is already in use
|
|
if (Test-Port -Port 5000) {
|
|
Write-Host "[Backend] Port 5000 is already in use. Backend may already be running." -ForegroundColor Green
|
|
return
|
|
}
|
|
|
|
# Start backend in a new window
|
|
$backendPath = Join-Path $ProjectRoot "colaflow-api"
|
|
$backendProject = Join-Path $backendPath "src\ColaFlow.API\ColaFlow.API.csproj"
|
|
|
|
if (-not (Test-Path $backendProject)) {
|
|
Write-Host "[Backend] ERROR: Backend project not found at $backendProject" -ForegroundColor Red
|
|
return
|
|
}
|
|
|
|
Write-Host "[Backend] Starting at $backendPath" -ForegroundColor Gray
|
|
Start-Process pwsh -ArgumentList "-NoExit", "-Command", "cd '$backendPath'; dotnet run --project '$backendProject'" -WindowStyle Normal
|
|
|
|
Write-Host "[Backend] Waiting for API to start..." -ForegroundColor Yellow
|
|
Start-Sleep -Seconds 5
|
|
|
|
if (Test-Port -Port 5000) {
|
|
Write-Host "[Backend] API started successfully at http://localhost:5000" -ForegroundColor Green
|
|
Write-Host "[Backend] Swagger UI: http://localhost:5000/swagger" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "[Backend] API is starting... Please check the backend window for status" -ForegroundColor Yellow
|
|
}
|
|
}
|
|
|
|
# Function to start frontend
|
|
function Start-Frontend {
|
|
Write-Host "[Frontend] Starting ColaFlow Web..." -ForegroundColor Yellow
|
|
|
|
# Check if frontend port is already in use
|
|
if (Test-Port -Port 3000) {
|
|
Write-Host "[Frontend] Port 3000 is already in use. Frontend may already be running." -ForegroundColor Green
|
|
Write-Host "[Frontend] Web UI: http://localhost:3000" -ForegroundColor Green
|
|
return
|
|
}
|
|
|
|
# Start frontend in a new window
|
|
$frontendPath = Join-Path $ProjectRoot "colaflow-web"
|
|
|
|
if (-not (Test-Path $frontendPath)) {
|
|
Write-Host "[Frontend] ERROR: Frontend directory not found at $frontendPath" -ForegroundColor Red
|
|
return
|
|
}
|
|
|
|
# Check if node_modules exists
|
|
$nodeModules = Join-Path $frontendPath "node_modules"
|
|
if (-not (Test-Path $nodeModules)) {
|
|
Write-Host "[Frontend] node_modules not found. Installing dependencies first..." -ForegroundColor Yellow
|
|
Push-Location $frontendPath
|
|
npm install
|
|
Pop-Location
|
|
}
|
|
|
|
Write-Host "[Frontend] Starting at $frontendPath" -ForegroundColor Gray
|
|
Start-Process pwsh -ArgumentList "-NoExit", "-Command", "cd '$frontendPath'; npm run dev" -WindowStyle Normal
|
|
|
|
Write-Host "[Frontend] Waiting for Web to start..." -ForegroundColor Yellow
|
|
Start-Sleep -Seconds 5
|
|
|
|
if (Test-Port -Port 3000) {
|
|
Write-Host "[Frontend] Web started successfully at http://localhost:3000" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "[Frontend] Web is starting... Please check the frontend window for status" -ForegroundColor Yellow
|
|
}
|
|
}
|
|
|
|
# Main execution
|
|
Write-Host "Starting development environment..." -ForegroundColor Cyan
|
|
Write-Host ""
|
|
|
|
# Start backend first
|
|
Start-Backend
|
|
Write-Host ""
|
|
|
|
# Start frontend
|
|
Start-Frontend
|
|
Write-Host ""
|
|
|
|
Write-Host "========================================" -ForegroundColor Cyan
|
|
Write-Host " Development Environment Started" -ForegroundColor Cyan
|
|
Write-Host "========================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "Services:" -ForegroundColor White
|
|
Write-Host " - Backend API: http://localhost:5000" -ForegroundColor White
|
|
Write-Host " - Swagger UI: http://localhost:5000/swagger" -ForegroundColor White
|
|
Write-Host " - Frontend: http://localhost:3000" -ForegroundColor White
|
|
Write-Host ""
|
|
Write-Host "Press Ctrl+C to exit this script." -ForegroundColor Gray
|
|
Write-Host "Note: Backend and Frontend are running in separate windows." -ForegroundColor Gray
|
|
Write-Host ""
|
|
|
|
# Keep the script running
|
|
try {
|
|
while ($true) {
|
|
Start-Sleep -Seconds 1
|
|
}
|
|
} finally {
|
|
Write-Host "Goodbye!" -ForegroundColor Cyan
|
|
}
|