feat(UI): initial working frontend UI
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
BDFR Web Interface Startup Script
|
||||
|
||||
This script provides an easy way to start the BDFR web interface with
|
||||
proper dependency management and error handling.
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import subprocess
|
||||
import importlib.util
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def check_python_version():
|
||||
"""Check if Python version is compatible (3.8+)"""
|
||||
if sys.version_info < (3, 8):
|
||||
print("ERROR: Python 3.8 or higher is required")
|
||||
print(f"Current version: {sys.version}")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def install_dependencies():
|
||||
"""Install required dependencies if missing"""
|
||||
requirements_path = Path(__file__).parent / "requirements.txt"
|
||||
|
||||
if not requirements_path.exists():
|
||||
print("❌ Error: requirements.txt not found")
|
||||
sys.exit(1)
|
||||
|
||||
print("Checking and installing dependencies...")
|
||||
|
||||
try:
|
||||
# Try to import required modules first
|
||||
required_modules = [
|
||||
'fastapi',
|
||||
'uvicorn',
|
||||
'websockets',
|
||||
'jinja2'
|
||||
]
|
||||
|
||||
missing_modules = []
|
||||
for module in required_modules:
|
||||
if not importlib.util.find_spec(module):
|
||||
missing_modules.append(module)
|
||||
|
||||
if missing_modules:
|
||||
print(f"Installing missing modules: {', '.join(missing_modules)}")
|
||||
subprocess.check_call([
|
||||
sys.executable, '-m', 'pip', 'install', '-r', str(requirements_path)
|
||||
])
|
||||
else:
|
||||
print("All dependencies are already installed")
|
||||
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"❌ Error installing dependencies: {e}")
|
||||
sys.exit(1)
|
||||
except Exception as e:
|
||||
print(f"❌ Error checking dependencies: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def check_bdfr_module():
|
||||
"""Check if BDFR module is available"""
|
||||
try:
|
||||
importlib.util.find_spec('bdfr')
|
||||
print("BDFR module found")
|
||||
except ImportError:
|
||||
print("⚠️ Warning: BDFR module not found in Python path")
|
||||
print("Make sure the parent directory is in your Python path or run from project root")
|
||||
|
||||
|
||||
def start_server():
|
||||
"""Start the FastAPI server"""
|
||||
print("Starting BDFR Web Interface...")
|
||||
print("Server will be available at: http://localhost:8000")
|
||||
print("API documentation at: http://localhost:8000/docs")
|
||||
print("Press Ctrl+C to stop the server")
|
||||
print("-" * 50)
|
||||
|
||||
try:
|
||||
# Start uvicorn server
|
||||
subprocess.call([
|
||||
sys.executable, '-m', 'uvicorn',
|
||||
'app.main:app',
|
||||
'--host', '0.0.0.0',
|
||||
'--port', '8000',
|
||||
'--reload'
|
||||
])
|
||||
except KeyboardInterrupt:
|
||||
print("\n🛑 Server stopped by user")
|
||||
except Exception as e:
|
||||
print(f"❌ Error starting server: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
def main():
|
||||
"""Main startup function"""
|
||||
print("BDFR Web Interface Startup")
|
||||
print("=" * 40)
|
||||
|
||||
# Change to web_interface directory
|
||||
web_interface_dir = Path(__file__).parent
|
||||
os.chdir(web_interface_dir)
|
||||
|
||||
# Pre-flight checks
|
||||
check_python_version()
|
||||
install_dependencies()
|
||||
check_bdfr_module()
|
||||
|
||||
print("\n" + "=" * 40)
|
||||
|
||||
# Start the server
|
||||
start_server()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user