Migrated from design-system-swarm with fresh git history.
Old project history preserved in /home/overbits/apps/design-system-swarm
Core components:
- MCP Server (Python FastAPI with mcp 1.23.1)
- Claude Plugin (agents, commands, skills, strategies, hooks, core)
- DSS Backend (dss-mvp1 - token translation, Figma sync)
- Admin UI (Node.js/React)
- Server (Node.js/Express)
- Storybook integration (dss-mvp1/.storybook)
Self-contained configuration:
- All paths relative or use DSS_BASE_PATH=/home/overbits/dss
- PYTHONPATH configured for dss-mvp1 and dss-claude-plugin
- .env file with all configuration
- Claude plugin uses ${CLAUDE_PLUGIN_ROOT} for portability
Migration completed: $(date)
🤖 Clean migration with full functionality preserved
217 lines
5.3 KiB
Bash
Executable File
217 lines
5.3 KiB
Bash
Executable File
#!/bin/bash
|
||
# DSS Setup Script
|
||
# Automated installation and configuration for Design System Server
|
||
|
||
set -e # Exit on error
|
||
|
||
# Colors for output
|
||
RED='\033[0;31m'
|
||
GREEN='\033[0;32m'
|
||
YELLOW='\033[1;33m'
|
||
BLUE='\033[0;34m'
|
||
NC='\033[0m' # No Color
|
||
|
||
# Functions
|
||
print_header() {
|
||
echo -e "${BLUE}============================================================${NC}"
|
||
echo -e "${BLUE}$1${NC}"
|
||
echo -e "${BLUE}============================================================${NC}"
|
||
}
|
||
|
||
print_success() {
|
||
echo -e "${GREEN}✓${NC} $1"
|
||
}
|
||
|
||
print_warning() {
|
||
echo -e "${YELLOW}⚠${NC} $1"
|
||
}
|
||
|
||
print_error() {
|
||
echo -e "${RED}✗${NC} $1"
|
||
}
|
||
|
||
print_info() {
|
||
echo -e "${BLUE}ℹ${NC} $1"
|
||
}
|
||
|
||
# Check prerequisites
|
||
check_prerequisites() {
|
||
print_header "Checking Prerequisites"
|
||
|
||
# Check Python version
|
||
if ! command -v python3 &> /dev/null; then
|
||
print_error "Python 3 is not installed"
|
||
exit 1
|
||
fi
|
||
|
||
PYTHON_VERSION=$(python3 --version | cut -d' ' -f2)
|
||
print_success "Python $PYTHON_VERSION found"
|
||
|
||
# Check Python version >= 3.10
|
||
if ! python3 -c "import sys; exit(0 if sys.version_info >= (3, 10) else 1)"; then
|
||
print_error "Python 3.10+ is required (found $PYTHON_VERSION)"
|
||
exit 1
|
||
fi
|
||
|
||
# Check pip
|
||
if ! command -v pip3 &> /dev/null; then
|
||
print_error "pip3 is not installed"
|
||
exit 1
|
||
fi
|
||
print_success "pip3 found"
|
||
|
||
# Check git (optional but recommended)
|
||
if command -v git &> /dev/null; then
|
||
print_success "git found"
|
||
else
|
||
print_warning "git not found (optional)"
|
||
fi
|
||
}
|
||
|
||
# Create virtual environment
|
||
setup_venv() {
|
||
print_header "Setting Up Virtual Environment"
|
||
|
||
if [ -d ".venv" ]; then
|
||
print_warning "Virtual environment already exists"
|
||
read -p "Recreate it? (y/N): " -n 1 -r
|
||
echo
|
||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||
rm -rf .venv
|
||
print_info "Removed existing virtual environment"
|
||
else
|
||
print_info "Using existing virtual environment"
|
||
return
|
||
fi
|
||
fi
|
||
|
||
python3 -m venv .venv
|
||
print_success "Virtual environment created"
|
||
}
|
||
|
||
# Activate virtual environment
|
||
activate_venv() {
|
||
print_info "Activating virtual environment..."
|
||
source .venv/bin/activate
|
||
print_success "Virtual environment activated"
|
||
}
|
||
|
||
# Install dependencies
|
||
install_dependencies() {
|
||
print_header "Installing Dependencies"
|
||
|
||
# Upgrade pip
|
||
print_info "Upgrading pip..."
|
||
pip install --upgrade pip > /dev/null 2>&1
|
||
print_success "pip upgraded"
|
||
|
||
# Install requirements
|
||
if [ -f "requirements.txt" ]; then
|
||
print_info "Installing packages from requirements.txt..."
|
||
pip install -r requirements.txt
|
||
print_success "Dependencies installed"
|
||
else
|
||
print_error "requirements.txt not found"
|
||
exit 1
|
||
fi
|
||
|
||
# Install Playwright browsers for Chrome DevTools
|
||
print_info "Installing Playwright browsers (for Chrome DevTools MCP)..."
|
||
if python3 -c "import playwright" 2>/dev/null; then
|
||
playwright install chromium > /dev/null 2>&1
|
||
print_success "Playwright Chromium browser installed"
|
||
else
|
||
print_warning "Playwright not available, skipping browser install"
|
||
fi
|
||
}
|
||
|
||
# Create directories
|
||
create_directories() {
|
||
print_header "Creating Project Directories"
|
||
|
||
mkdir -p .dss/cache
|
||
mkdir -p .dss/logs
|
||
print_success "Directories created"
|
||
}
|
||
|
||
# Setup environment file
|
||
setup_env() {
|
||
print_header "Setting Up Environment Variables"
|
||
|
||
if [ -f ".env" ]; then
|
||
print_warning ".env file already exists"
|
||
return
|
||
fi
|
||
|
||
if [ -f ".env.example" ]; then
|
||
cp .env.example .env
|
||
print_success ".env file created from .env.example"
|
||
print_warning "Please edit .env and add your FIGMA_TOKEN"
|
||
else
|
||
print_error ".env.example not found"
|
||
fi
|
||
}
|
||
|
||
# Run tests
|
||
run_tests() {
|
||
print_header "Running Tests"
|
||
|
||
print_info "Running test suite..."
|
||
if python3 test_quick.py; then
|
||
print_success "All tests passed!"
|
||
else
|
||
print_warning "Some tests failed (this is OK for first setup)"
|
||
fi
|
||
}
|
||
|
||
# Print next steps
|
||
print_next_steps() {
|
||
print_header "Setup Complete!"
|
||
|
||
echo ""
|
||
echo -e "${GREEN}✓ DSS is ready to use!${NC}"
|
||
echo ""
|
||
echo "Next steps:"
|
||
echo ""
|
||
echo "1. Activate the virtual environment:"
|
||
echo -e " ${BLUE}source .venv/bin/activate${NC}"
|
||
echo ""
|
||
echo "2. Add your Figma token to .env:"
|
||
echo -e " ${BLUE}FIGMA_TOKEN=figd_...${NC}"
|
||
echo ""
|
||
echo "3. Start the REST API server:"
|
||
echo -e " ${BLUE}python -m tools.api.server${NC}"
|
||
echo ""
|
||
echo "4. Start the MCP server (in another terminal):"
|
||
echo -e " ${BLUE}python -m tools.api.mcp_server${NC}"
|
||
echo ""
|
||
echo "5. Read the quickstart guide:"
|
||
echo -e " ${BLUE}cat docs/QUICKSTART.md${NC}"
|
||
echo ""
|
||
echo -e "${YELLOW}Documentation:${NC}"
|
||
echo " - Quickstart: docs/QUICKSTART.md"
|
||
echo " - Architecture: docs/ARCHITECTURE.md"
|
||
echo " - API Reference: README.md"
|
||
echo " - Examples: examples/"
|
||
echo ""
|
||
}
|
||
|
||
# Main installation flow
|
||
main() {
|
||
echo ""
|
||
print_header "DSS (Design System Server) Setup"
|
||
echo ""
|
||
|
||
check_prerequisites
|
||
setup_venv
|
||
activate_venv
|
||
install_dependencies
|
||
create_directories
|
||
setup_env
|
||
run_tests
|
||
print_next_steps
|
||
}
|
||
|
||
# Run main function
|
||
main
|