40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
"""Serve RAG-cut frontend static files (development mode).
|
|||
|
|
|
||
|
|
Requires the API backend to be running separately:
|
||
|
|
python backend/run.py
|
||
|
|
"""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import argparse
|
||
|
|
import http.server
|
||
|
|
import socketserver
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
FRONTEND_DIR = Path(__file__).resolve().parent
|
||
|
|
DEFAULT_API = "http://127.0.0.1:8000"
|
||
|
|
|
||
|
|
|
||
|
|
class FrontendHandler(http.server.SimpleHTTPRequestHandler):
|
||
|
|
def __init__(self, *args, **kwargs):
|
||
|
|
super().__init__(*args, directory=str(FRONTEND_DIR), **kwargs)
|
||
|
|
|
||
|
|
|
||
|
|
def main() -> None:
|
||
|
|
parser = argparse.ArgumentParser(description="Start RAG-cut frontend dev server")
|
||
|
|
parser.add_argument("--host", default="127.0.0.1", help="Bind host (default: 127.0.0.1)")
|
||
|
|
parser.add_argument("--port", type=int, default=5173, help="Bind port (default: 5173)")
|
||
|
|
args = parser.parse_args()
|
||
|
|
|
||
|
|
url = f"http://{args.host}:{args.port}"
|
||
|
|
socketserver.TCPServer.allow_reuse_address = True
|
||
|
|
with socketserver.TCPServer((args.host, args.port), FrontendHandler) as httpd:
|
||
|
|
print(f"Frontend: {url}")
|
||
|
|
print(f"API: {DEFAULT_API} (start with: python backend/run.py)")
|
||
|
|
print("Press Ctrl+C to stop.")
|
||
|
|
httpd.serve_forever()
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|