Nagesh Muralidhar commited on
Commit
e01254e
·
1 Parent(s): 2784e84

addin app.py

Browse files
Files changed (2) hide show
  1. app.py +27 -17
  2. static/index.html +15 -0
app.py CHANGED
@@ -60,15 +60,6 @@ def get_index_html():
60
  else:
61
  return "<html><body><h1>Index file not found</h1></body></html>"
62
 
63
- try:
64
- # Try to import the backend app but don't use it directly
65
- import backend.app.main
66
- logger.info("Backend module imported successfully")
67
- backend_available = True
68
- except Exception as e:
69
- logger.error(f"Error importing backend module: {str(e)}")
70
- backend_available = False
71
-
72
  # Create the main application
73
  app = FastAPI(title="PodCraft")
74
 
@@ -81,6 +72,33 @@ app.add_middleware(
81
  allow_headers=["*"],
82
  )
83
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  # Define the root route that directly serves index.html
85
  @app.get("/", response_class=HTMLResponse)
86
  async def root():
@@ -124,14 +142,6 @@ if static_path.exists():
124
  # Catch-all route for client-side routing in the React app
125
  @app.get("/{full_path:path}")
126
  async def catch_all(full_path: str, request: Request):
127
- # Skip API paths and redirect them to the backend
128
- if full_path.startswith("api/") or full_path == "docs" or full_path == "openapi.json":
129
- if backend_available:
130
- # Use the backend.app.main module's routes
131
- return backend.app.main.app.get(full_path)
132
- else:
133
- return {"error": "Backend API not available"}
134
-
135
  # Skip static file paths
136
  if full_path.startswith("static/") or full_path.startswith("assets/"):
137
  raise HTTPException(status_code=404, detail="Not found")
 
60
  else:
61
  return "<html><body><h1>Index file not found</h1></body></html>"
62
 
 
 
 
 
 
 
 
 
 
63
  # Create the main application
64
  app = FastAPI(title="PodCraft")
65
 
 
72
  allow_headers=["*"],
73
  )
74
 
75
+ # Try to load the backend app
76
+ backend_app = None
77
+ try:
78
+ # Import the backend app
79
+ from backend.app.main import app as backend_app
80
+ logger.info("Backend module imported successfully")
81
+
82
+ # Add all non-root routes from the backend app to our main app
83
+ from fastapi.routing import APIRoute, APIRouter
84
+
85
+ # Create a router for backend routes
86
+ backend_router = APIRouter()
87
+
88
+ # Add all routes from the backend app to our router
89
+ for route in backend_app.routes:
90
+ if not (isinstance(route, APIRoute) and route.path == "/"):
91
+ # Add this route to our router
92
+ logger.info(f"Adding backend route: {route.path}")
93
+ backend_router.routes.append(route)
94
+
95
+ # Include the backend router in our main app
96
+ app.include_router(backend_router)
97
+
98
+ except Exception as e:
99
+ logger.error(f"Error importing backend module: {str(e)}")
100
+ backend_app = None
101
+
102
  # Define the root route that directly serves index.html
103
  @app.get("/", response_class=HTMLResponse)
104
  async def root():
 
142
  # Catch-all route for client-side routing in the React app
143
  @app.get("/{full_path:path}")
144
  async def catch_all(full_path: str, request: Request):
 
 
 
 
 
 
 
 
145
  # Skip static file paths
146
  if full_path.startswith("static/") or full_path.startswith("assets/"):
147
  raise HTTPException(status_code=404, detail="Not found")
static/index.html CHANGED
@@ -2,8 +2,23 @@
2
  <html lang="en">
3
  <head>
4
  <meta charset="UTF-8">
 
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
  <title>PodCraft - AI Podcast Generator</title>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" />
8
  <style>
9
  body {
 
2
  <html lang="en">
3
  <head>
4
  <meta charset="UTF-8">
5
+ <link rel="icon" type="image/svg+xml" href="/vite.svg" />
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
  <title>PodCraft - AI Podcast Generator</title>
8
+ <script type="text/javascript">
9
+ // Set the API base URL dynamically based on the current domain
10
+ window.API_BASE_URL = ''; // Empty string means use current domain
11
+
12
+ // Override fetch to rewrite localhost:8000 URLs
13
+ const originalFetch = window.fetch;
14
+ window.fetch = function(url, options) {
15
+ if (typeof url === 'string' && url.includes('localhost:8000')) {
16
+ // Replace localhost:8000 with current origin (empty string)
17
+ url = url.replace('http://localhost:8000', '');
18
+ }
19
+ return originalFetch.call(this, url, options);
20
+ };
21
+ </script>
22
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" />
23
  <style>
24
  body {