from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware import os from app.routers import auth, properties, affordable, messages, notifications, admin, payments from app.db.session import engine, SessionLocal from app.db.base import Base # Create database tables Base.metadata.create_all(bind=engine) app = FastAPI( title="Urban Real Estate API", description="Backend API for Urban Real Estate App - Nigerian housing marketplace", version="1.0.0", docs_url="/docs", redoc_url="/redoc", openapi_url="/openapi.json" ) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Include routers app.include_router(auth.router) app.include_router(properties.router) app.include_router(affordable.router) app.include_router(messages.router) app.include_router(notifications.router) app.include_router(admin.router) app.include_router(payments.router) @app.get("/") async def root(): return { "title": "Urban Real Estate API", "description": "Backend API for Urban Real Estate App - Nigerian housing marketplace", "documentation": "/docs", "health": "/health", "version": "1.0.0" } @app.get("/health") async def health_check(): # Check database connection try: db = SessionLocal() db.execute("SELECT 1") db.close() db_status = "healthy" except Exception as e: db_status = f"unhealthy: {str(e)}" return { "status": "healthy", "service": "Urban Real Estate API", "version": "1.0.0", "database": db_status, "environment": os.getenv("ENVIRONMENT", "development") } if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)