import sys import os # Add the backend directory to the Python path so imports work when running from app directory sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.core.config import settings from app.api import auth, contacts, lists, templates, campaigns, imports, google, webhooks, stats, workers import logging import uvicorn # Configure logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) app = FastAPI( title="WhatsApp Campaign Manager API", description="Production-quality API for managing WhatsApp campaigns with compliance", version="1.0.0" ) # CORS cors_origins = list({*settings.cors_origins_list, "http://localhost:5173"}) app.add_middleware( CORSMiddleware, allow_origins=cors_origins, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Include routers app.include_router(auth.router, prefix="/api/auth", tags=["Authentication"]) app.include_router(contacts.router, prefix="/api/contacts", tags=["Contacts"]) app.include_router(lists.router, prefix="/api/lists", tags=["Lists"]) app.include_router(templates.router, prefix="/api/templates", tags=["Templates"]) app.include_router(campaigns.router, prefix="/api/campaigns", tags=["Campaigns"]) app.include_router(imports.router, prefix="/api/imports", tags=["Imports"]) app.include_router(google.router, prefix="/api/imports", tags=["Google OAuth"]) app.include_router(webhooks.router, prefix="/api/webhooks", tags=["Webhooks"]) app.include_router(stats.router, prefix="/api/stats", tags=["Statistics"]) app.include_router(workers.router, prefix="/api/workers", tags=["Workers"]) @app.get("/") def root(): return { "name": "WhatsApp Campaign Manager API", "version": "1.0.0", "status": "running" } @app.get("/health") def health_check(): return {"status": "healthy"} if __name__ == "__main__": uvicorn.run(app, host="127.0.0.1", port=8000, reload=False)