TASK-001: Setup FastAPI project structure

This commit is contained in:
OpenClaw Agent
2026-04-16 04:40:40 +00:00
parent a3eca3b7da
commit ef5b32143a
26 changed files with 399 additions and 415 deletions

View File

@@ -1,21 +1,15 @@
"""SocialPhoto - Instagram Clone API.
A simple social media API for sharing images with likes, comments, and user follows.
"""
from pathlib import Path
"""FastAPI application entry point."""
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
from app.core.config import settings
from app.db.database import engine, Base
# Create FastAPI app
app = FastAPI(
title="SocialPhoto",
description="Instagram Clone API - Share images with likes, comments, and follows",
version="1.0.0",
title=settings.APP_NAME,
version=settings.APP_VERSION,
debug=settings.DEBUG,
)
# CORS middleware
@@ -27,43 +21,14 @@ app.add_middleware(
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"])
@app.get("/")
async def root():
"""Root endpoint."""
return {
"name": "SocialPhoto",
"version": "1.0.0",
"description": "Instagram Clone API",
}
return {"message": f"Welcome to {settings.APP_NAME}", "version": settings.APP_VERSION}
@app.get("/health", tags=["Health"])
@app.get("/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)