"""SocialPhoto - Instagram Clone API. A simple social media API for sharing images with likes, comments, and user follows. """ from pathlib import Path from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles from app.database import init_db from app.routes import auth, comments, feed, posts, users # Create FastAPI app app = FastAPI( title="SocialPhoto", description="Instagram Clone API - Share images with likes, comments, and follows", version="1.0.0", ) # CORS middleware app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Mount uploads directory UPLOAD_DIR = Path(__file__).parent.parent / "uploads" UPLOAD_DIR.mkdir(parents=True, exist_ok=True) app.mount("/uploads", StaticFiles(directory=str(UPLOAD_DIR)), name="uploads") @app.on_event("startup") async def startup_event(): """Initialize database on startup.""" init_db() # Include routers app.include_router(auth.router) app.include_router(users.router) app.include_router(posts.router) app.include_router(comments.router) app.include_router(feed.router) @app.get("/", tags=["Root"]) async def root(): """Root endpoint.""" return { "name": "SocialPhoto", "version": "1.0.0", "description": "Instagram Clone API", } @app.get("/health", tags=["Health"]) async def health_check(): """Health check endpoint.""" return {"status": "healthy"} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000)