Files

74 lines
2.0 KiB
Bash
Executable File

#!/bin/bash
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
UI_DIR="$PROJECT_ROOT/ui"
echo "Building Routstr UI for static deployment..."
echo "UI directory: $UI_DIR"
if [ ! -d "$UI_DIR" ]; then
echo "Error: UI directory not found at $UI_DIR"
exit 1
fi
cd "$UI_DIR"
echo "Installing dependencies..."
if command -v pnpm &> /dev/null; then
pnpm install
elif command -v npm &> /dev/null; then
npm install
else
echo "Error: Neither pnpm nor npm found. Please install Node.js and npm."
exit 1
fi
# Check for root .env file (centralized configuration)
ROOT_ENV_FILE="$PROJECT_ROOT/.env"
UI_ENV_FILE="$UI_DIR/.env.local"
if [ -f "$ROOT_ENV_FILE" ]; then
echo "Loading environment variables from $ROOT_ENV_FILE"
# Extract NEXT_PUBLIC_ variables and create .env.local for Next.js
grep '^NEXT_PUBLIC_' "$ROOT_ENV_FILE" > "$UI_ENV_FILE"
echo "Created $UI_ENV_FILE with UI configuration"
else
echo "Warning: .env file not found in project root. Using default configuration."
echo "Create a .env file based on .env.example for proper configuration."
# Create empty .env.local to avoid issues
> "$UI_ENV_FILE"
fi
echo "Building static export..."
if command -v pnpm &> /dev/null; then
pnpm run build
else
npm run build
fi
rm -rf ../ui_out
mkdir -p ../ui_out
mv out/* ../ui_out
# Clean up the temporary .env.local file
if [ -f "$UI_ENV_FILE" ]; then
rm "$UI_ENV_FILE"
echo "Cleaned up temporary $UI_ENV_FILE"
fi
echo ""
echo "✓ UI build complete!"
echo "Static files generated at: $UI_DIR/out"
echo ""
echo "To serve the UI from the Python backend:"
echo " 1. Configure NEXT_PUBLIC_API_URL in the root .env file"
echo " 2. For development: Set NEXT_PUBLIC_API_URL=http://127.0.0.1:8000 or leave empty for relative paths"
echo " 3. For production: Set NEXT_PUBLIC_API_URL=https://your-production-api.com"
echo " 4. Start the backend: uvicorn routstr.core.main:app --host 0.0.0.0 --port 8000"
echo " 5. Access the UI at: http://localhost:8000"
echo ""