- Apply dark blue color scheme (#0f172a, #1e293b, #334155) throughout UI - Update header with blue gradient and Obsidian branding - Add missing toolbar buttons: Auto-refresh, Seed Data, Search filter - Implement action buttons (Download, Delete) in artifacts table - Add client-side search/filtering functionality - Update app to support sim_source_id field in database - Move quickstart scripts to repository root for easier access - Apply dark theme to tables, tabs, and all Material components 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
213 lines
9.3 KiB
PowerShell
213 lines
9.3 KiB
PowerShell
[CmdletBinding()]
|
|
param(
|
|
[switch]$Rebuild,
|
|
[switch]$FullStack,
|
|
[switch]$Dev,
|
|
[switch]$Help
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
if ($Help) {
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
Write-Host "Test Artifact Data Lake - Quick Start" -ForegroundColor Cyan
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "Usage: .\quickstart.ps1 [OPTIONS]" -ForegroundColor White
|
|
Write-Host ""
|
|
Write-Host "Options:" -ForegroundColor Yellow
|
|
Write-Host " -Rebuild Force rebuild of all containers" -ForegroundColor White
|
|
Write-Host " -FullStack Start complete stack including frontend (production build)" -ForegroundColor White
|
|
Write-Host " -Dev Start backend only, use separate dev server for frontend" -ForegroundColor White
|
|
Write-Host " -Help Show this help message" -ForegroundColor White
|
|
Write-Host ""
|
|
Write-Host "Default: Starts backend services only (recommended for development)" -ForegroundColor Green
|
|
Write-Host ""
|
|
exit 0
|
|
}
|
|
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
Write-Host "Test Artifact Data Lake - Quick Start" -ForegroundColor Cyan
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
|
|
# Check if Docker is installed
|
|
if (-not (Get-Command "docker" -ErrorAction SilentlyContinue)) {
|
|
Write-Host "Error: Docker is not installed. Please install Docker Desktop first." -ForegroundColor Red
|
|
Write-Host "Visit: https://www.docker.com/products/docker-desktop" -ForegroundColor Yellow
|
|
Read-Host "Press Enter to exit"
|
|
exit 1
|
|
}
|
|
|
|
# Check if Docker Compose is available
|
|
$ComposeCmd = $null
|
|
if (Get-Command "docker-compose" -ErrorAction SilentlyContinue) {
|
|
$ComposeCmd = "docker-compose"
|
|
} else {
|
|
try {
|
|
& docker compose version | Out-Null
|
|
$ComposeCmd = "docker compose"
|
|
}
|
|
catch {
|
|
Write-Host "Error: Docker Compose is not available." -ForegroundColor Red
|
|
Write-Host "Please ensure Docker Desktop is running." -ForegroundColor Yellow
|
|
Read-Host "Press Enter to exit"
|
|
exit 1
|
|
}
|
|
}
|
|
|
|
# Create .env file if it doesn't exist
|
|
if (-not (Test-Path ".env")) {
|
|
Write-Host "Creating .env file from .env.example..." -ForegroundColor Yellow
|
|
Copy-Item ".env.example" ".env"
|
|
Write-Host "[OK] .env file created" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "[OK] .env file already exists" -ForegroundColor Green
|
|
}
|
|
|
|
Write-Host ""
|
|
|
|
# Handle rebuild logic
|
|
if ($Rebuild) {
|
|
Write-Host "Rebuilding containers..." -ForegroundColor Yellow
|
|
Write-Host "Stopping existing containers..." -ForegroundColor White
|
|
|
|
if ($FullStack) {
|
|
if ($ComposeCmd -eq "docker compose") {
|
|
& docker compose -f "docker-compose.production.yml" down
|
|
Write-Host "Removing existing images for full rebuild..." -ForegroundColor White
|
|
& docker compose -f "docker-compose.production.yml" down --rmi local 2>$null
|
|
Write-Host "Building and starting full stack..." -ForegroundColor White
|
|
& docker compose -f "docker-compose.production.yml" up -d --build
|
|
} else {
|
|
& docker-compose -f "docker-compose.production.yml" down
|
|
Write-Host "Removing existing images for full rebuild..." -ForegroundColor White
|
|
& docker-compose -f "docker-compose.production.yml" down --rmi local 2>$null
|
|
Write-Host "Building and starting full stack..." -ForegroundColor White
|
|
& docker-compose -f "docker-compose.production.yml" up -d --build
|
|
}
|
|
} else {
|
|
if ($ComposeCmd -eq "docker compose") {
|
|
& docker compose down
|
|
Write-Host "Removing existing backend images for rebuild..." -ForegroundColor White
|
|
& docker compose down --rmi local 2>$null
|
|
Write-Host "Building and starting backend services..." -ForegroundColor White
|
|
& docker compose up -d --build
|
|
} else {
|
|
& docker-compose down
|
|
Write-Host "Removing existing backend images for rebuild..." -ForegroundColor White
|
|
& docker-compose down --rmi local 2>$null
|
|
Write-Host "Building and starting backend services..." -ForegroundColor White
|
|
& docker-compose up -d --build
|
|
}
|
|
}
|
|
} else {
|
|
# Regular startup
|
|
if ($FullStack) {
|
|
Write-Host "Starting full production stack (backend + frontend)..." -ForegroundColor Green
|
|
if ($ComposeCmd -eq "docker compose") {
|
|
& docker compose -f "docker-compose.production.yml" up -d
|
|
} else {
|
|
& docker-compose -f "docker-compose.production.yml" up -d
|
|
}
|
|
} else {
|
|
Write-Host "Starting backend services..." -ForegroundColor Green
|
|
if ($ComposeCmd -eq "docker compose") {
|
|
& docker compose up -d
|
|
} else {
|
|
& docker-compose up -d
|
|
}
|
|
}
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "Waiting for services to be ready..." -ForegroundColor Yellow
|
|
Start-Sleep -Seconds 15
|
|
|
|
Write-Host ""
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
if ($FullStack) {
|
|
Write-Host "Complete Stack is running!" -ForegroundColor Green
|
|
} else {
|
|
Write-Host "Backend Services are running!" -ForegroundColor Green
|
|
}
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "API: http://localhost:8000" -ForegroundColor White
|
|
Write-Host "API Docs: http://localhost:8000/docs" -ForegroundColor White
|
|
Write-Host "MinIO Console: http://localhost:9001" -ForegroundColor White
|
|
Write-Host " Username: minioadmin" -ForegroundColor Gray
|
|
Write-Host " Password: minioadmin" -ForegroundColor Gray
|
|
Write-Host ""
|
|
|
|
if ($FullStack) {
|
|
Write-Host "Frontend: http://localhost:80" -ForegroundColor White
|
|
Write-Host " (Production build with Nginx)" -ForegroundColor Gray
|
|
Write-Host ""
|
|
Write-Host "To view logs: $ComposeCmd -f docker-compose.production.yml logs -f" -ForegroundColor Yellow
|
|
Write-Host "To stop: $ComposeCmd -f docker-compose.production.yml down" -ForegroundColor Yellow
|
|
} else {
|
|
Write-Host "To view logs: $ComposeCmd logs -f" -ForegroundColor Yellow
|
|
Write-Host "To stop: $ComposeCmd down" -ForegroundColor Yellow
|
|
Write-Host ""
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
Write-Host "Frontend Options:" -ForegroundColor Cyan
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "Development (with hot reload):" -ForegroundColor White
|
|
Write-Host " .\dev-start.ps1" -ForegroundColor Green
|
|
Write-Host " Frontend will be available at: http://localhost:4200" -ForegroundColor Gray
|
|
Write-Host ""
|
|
Write-Host "Or start full production stack:" -ForegroundColor White
|
|
Write-Host " .\quickstart.ps1 -FullStack" -ForegroundColor Green
|
|
Write-Host " Complete stack at: http://localhost:80" -ForegroundColor Gray
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
Write-Host "Rebuild Options:" -ForegroundColor Cyan
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "Force rebuild backend: .\quickstart.ps1 -Rebuild" -ForegroundColor Yellow
|
|
Write-Host "Force rebuild full stack: .\quickstart.ps1 -Rebuild -FullStack" -ForegroundColor Yellow
|
|
Write-Host ""
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
Write-Host "Testing the API..." -ForegroundColor Cyan
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
|
|
# Wait a bit more for API to be fully ready
|
|
Start-Sleep -Seconds 5
|
|
|
|
# Test health endpoint
|
|
try {
|
|
$response = Invoke-RestMethod -Uri "http://localhost:8000/health" -Method Get -TimeoutSec 10
|
|
if ($response.status -eq "healthy") {
|
|
Write-Host "[OK] API is healthy!" -ForegroundColor Green
|
|
Write-Host ""
|
|
if (-not $FullStack) {
|
|
Write-Host "Ready for development!" -ForegroundColor Green
|
|
Write-Host "Run '.\dev-start.ps1' to start the frontend with hot reload" -ForegroundColor Yellow
|
|
Write-Host ""
|
|
}
|
|
Write-Host "Example: Upload a test file" -ForegroundColor White
|
|
Write-Host "----------------------------" -ForegroundColor Gray
|
|
Write-Host 'echo "test,data" > test.csv' -ForegroundColor Green
|
|
Write-Host 'curl -X POST "http://localhost:8000/api/v1/artifacts/upload"' -ForegroundColor Green
|
|
Write-Host ' -F "file=@test.csv"' -ForegroundColor Green
|
|
Write-Host ' -F "test_name=sample_test"' -ForegroundColor Green
|
|
Write-Host ' -F "test_suite=demo"' -ForegroundColor Green
|
|
Write-Host ' -F "test_result=pass"' -ForegroundColor Green
|
|
Write-Host ""
|
|
} else {
|
|
Write-Host "[WARNING] API returned unexpected status. Please check http://localhost:8000/health" -ForegroundColor Yellow
|
|
}
|
|
}
|
|
catch {
|
|
Write-Host "[WARNING] API is not responding yet. Please wait a moment and check http://localhost:8000/health" -ForegroundColor Yellow
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "=========================================" -ForegroundColor Cyan
|
|
Write-Host "Setup complete!" -ForegroundColor Green
|
|
Write-Host "=========================================" -ForegroundColor Cyan |