#!/usr/bin/env python3 """ Setup script for the new fast N8N workflow documentation system. """ import subprocess import sys import os from pathlib import Path def run_command(command, description): """Run a shell command and handle errors.""" print(f"šŸ”„ {description}...") try: result = subprocess.run(command, shell=True, check=True, capture_output=True, text=True) print(f"āœ… {description} completed successfully") return result.stdout except subprocess.CalledProcessError as e: print(f"āŒ {description} failed: {e.stderr}") return None def install_dependencies(): """Install Python dependencies.""" return run_command( f"{sys.executable} -m pip install -r requirements.txt", "Installing Python dependencies" ) def index_workflows(): """Index all workflows into the database.""" return run_command( f"{sys.executable} workflow_db.py --index", "Indexing workflow files into database" ) def main(): print("šŸš€ Setting up N8N Fast Workflow Documentation System") print("=" * 60) # Check if we're in the right directory if not os.path.exists("workflows"): print("āŒ Error: 'workflows' directory not found. Please run this script from the repository root.") sys.exit(1) # Install dependencies if install_dependencies() is None: print("āŒ Failed to install dependencies. Please install manually:") print(" pip install fastapi uvicorn pydantic") sys.exit(1) # Index workflows if index_workflows() is None: print("āš ļø Warning: Failed to index workflows. You can do this manually later:") print(" python workflow_db.py --index") print("\nšŸŽ‰ Setup completed successfully!") print("\nšŸ“Š Performance Comparison:") print(" Old system: 71MB HTML file, 10s+ load time") print(" New system: <100KB initial load, <100ms search") print("\nšŸš€ To start the fast documentation server:") print(" python api_server.py") print("\n🌐 Then open: http://localhost:8000") print("\nšŸ’” Features:") print(" • Instant search with <100ms response times") print(" • Virtual scrolling for smooth browsing") print(" • Real-time filtering and pagination") print(" • Lazy-loaded diagrams and JSON viewing") print(" • Dark/light theme support") print(" • Mobile-responsive design") if __name__ == "__main__": main()