""" FastAPI application entry point. """ from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from app.config import settings # Create FastAPI app app = FastAPI( title=settings.PROJECT_NAME, version="0.1.0", description="MyBeacon Backend API - Modular BLE/WiFi monitoring platform", docs_url="/docs", redoc_url="/redoc", ) # Configure CORS app.add_middleware( CORSMiddleware, allow_origins=settings.cors_origins_list, allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) @app.get("/") async def root(): """Root endpoint - API info.""" return { "name": settings.PROJECT_NAME, "version": "0.1.0", "status": "running", } @app.get("/health") async def health_check(): """Health check endpoint.""" return {"status": "healthy"} # Include routers from app.api.v1 import router as api_v1_router app.include_router(api_v1_router, prefix=settings.API_V1_PREFIX) # Startup event @app.on_event("startup") async def startup_event(): """Initialize services on startup""" # Start tunnel cleanup background task from app.services.tunnel_service import tunnel_service tunnel_service.start_background_cleanup() print("[startup] Tunnel cleanup task started") # Start host monitoring background task import asyncio from app.services.host_monitor import host_monitor asyncio.create_task(host_monitor.run_monitoring_loop()) print("[startup] Host monitoring task started") # Shutdown event @app.on_event("shutdown") async def shutdown_event(): """Cleanup on shutdown""" from app.services.host_monitor import host_monitor await host_monitor.stop() print("[shutdown] Host monitoring stopped")