@@ -23,7 +23,15 @@ class Config:
2323 if ENVIRONMENT not in ["dev" , "prod" , "staging" ]:
2424 raise ValueError (f"Invalid ENVIRONMENT value: { ENVIRONMENT } . Must be one of: dev, prod, staging" )
2525
26- print (f"Running in { ENVIRONMENT } environment" )
26+ # Dev name prefix (required in dev mode to avoid naming conflicts)
27+ DEV_NAME = os .environ .get ("DEV_NAME" , "" )
28+ if ENVIRONMENT == "dev" and not DEV_NAME :
29+ raise ValueError (
30+ "DEV_NAME environment variable is required for dev mode. "
31+ "Run with: uv run dev <name>"
32+ )
33+
34+ print (f"Running in { ENVIRONMENT } environment" + (f" (dev instance: { DEV_NAME } )" if DEV_NAME else "" ))
2735
2836 # Modal app name (matches backend app name)
2937 APP_NAME = f"clipabit-{ ENVIRONMENT } "
@@ -32,12 +40,14 @@ class Config:
3240 url_portion = "dev" if ENVIRONMENT == "dev" else ""
3341 url_portion2 = "-dev" if ENVIRONMENT == "dev" else ""
3442
43+ # App name prefix for dev mode (e.g., "john-dev" instead of "dev")
44+ app_prefix = f"{ DEV_NAME } -{ ENVIRONMENT } " if ENVIRONMENT == "dev" else ENVIRONMENT
3545
3646 # Server API URL (handles upload, status, videos, delete, cache)
37- SERVER_BASE_URL = f"https://clipabit01--{ ENVIRONMENT } -server-{ url_portion } server-asgi-app{ url_portion2 } .modal.run"
47+ SERVER_BASE_URL = f"https://clipabit01--{ app_prefix } -server-{ url_portion } server-asgi-app{ url_portion2 } .modal.run"
3848
3949 # Search API URL (in dev its server-searchservice-asgi-app, else its search-searchservice-asgi-app)
40- SEARCH_BASE_URL = f"https://clipabit01--{ ENVIRONMENT } -{ "server" if ENVIRONMENT == "dev" else "search" } -searchservice-asgi-app{ url_portion2 } .modal.run"
50+ SEARCH_BASE_URL = f"https://clipabit01--{ app_prefix } -{ "server" if ENVIRONMENT == "dev" else "search" } -searchservice-asgi-app{ url_portion2 } .modal.run"
4151
4252 # API Endpoints
4353 SERVER_UPLOAD_URL = f"{ SERVER_BASE_URL } /upload"
0 commit comments