#!/usr/bin/env python3 """ Simple HTTP server for serving the SeReact frontend during development. """ import http.server import socketserver import webbrowser import os import sys from pathlib import Path # Configuration PORT = 8080 HOST = 'localhost' class CustomHTTPRequestHandler(http.server.SimpleHTTPRequestHandler): """Custom handler to serve index.html for SPA routing""" def end_headers(self): # Add CORS headers for development self.send_header('Access-Control-Allow-Origin', '*') self.send_header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS') self.send_header('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-API-Key') super().end_headers() def do_OPTIONS(self): # Handle preflight requests self.send_response(200) self.end_headers() def main(): # Change to the directory containing this script script_dir = Path(__file__).parent os.chdir(script_dir) # Check if index.html exists if not Path('index.html').exists(): print("Error: index.html not found in current directory") print(f"Current directory: {os.getcwd()}") sys.exit(1) # Create server with socketserver.TCPServer((HOST, PORT), CustomHTTPRequestHandler) as httpd: server_url = f"http://{HOST}:{PORT}" print(f"šŸš€ SeReact Frontend Development Server") print(f"šŸ“ Serving files from: {os.getcwd()}") print(f"🌐 Server running at: {server_url}") print(f"šŸ“± Open in browser: {server_url}") print(f"ā¹ļø Press Ctrl+C to stop the server") print() # Try to open browser automatically try: webbrowser.open(server_url) print("āœ… Browser opened automatically") except Exception as e: print(f"āš ļø Could not open browser automatically: {e}") print() print("šŸ”§ Development Tips:") print(" - Edit files and refresh browser to see changes") print(" - Check browser console (F12) for errors") print(" - Configure API settings in the app") print() try: httpd.serve_forever() except KeyboardInterrupt: print("\nšŸ›‘ Server stopped by user") print("šŸ‘‹ Thanks for using SeReact!") if __name__ == "__main__": main()