Sami Marreed
feat: docker-v1 with optimized frontend
0646b18
from fastapi import FastAPI
from contextlib import asynccontextmanager
import uvicorn
import argparse
from crm_api.database import init_db
from crm_api.accounts import router as accounts_router
from crm_api.leads import router as leads_router
from crm_api.contacts import router as contacts_router
from crm_api.opportunities import router as opportunities_router
import os
@asynccontextmanager
async def lifespan(app: FastAPI):
# Startup
init_db()
yield
# Shutdown (if needed)
app = FastAPI(title="CRM System API", version="1.0.0", lifespan=lifespan)
# Include routers for different API categories
app.include_router(accounts_router)
app.include_router(leads_router)
app.include_router(contacts_router)
app.include_router(opportunities_router)
def main():
"""Main entry point for running the CRM API server"""
parser = argparse.ArgumentParser(description="CRM System API Server")
parser.add_argument("--host", default="0.0.0.0", help="Host to bind to")
# Get port from env var with fallback to default
env_port = os.environ.get("DYNACONF_SERVER_PORTS__CRM_API", "8007")
print(f"[CRM Server] Reading DYNACONF_SERVER_PORTS__CRM_API from environment: {env_port}")
parser.add_argument(
"--port",
type=int,
default=int(env_port),
help="Port to bind to",
)
parser.add_argument("--reload", action="store_true", help="Enable auto-reload")
args = parser.parse_args()
print(f"[CRM Server] Starting CRM API server on {args.host}:{args.port}")
uvicorn.run(app, host=args.host, port=args.port, reload=args.reload)
if __name__ == "__main__":
main()